1.Kafka-快速认识概念

快速认识概念

Broker

是Kafka的服务端程序,可以简单的认为一个MQ节点就是一个Broker。

Broker存储Topic的数据。

Producer生产者

创建消息Message,发送到MQ中。这个角色把消息发布到Kafka的Topic中。

Consumer消费者

消费队列里面的消息。

ConsumerGroup消费者组

同个topic, 广播发送给不同的group,一个group中只有一个consumer可以消费此消息。

Topic

每条发到Kafka集群的消息都会有一个主题,也就是Topic。

Partition分区

kafka数据存储的基本单元,topic中的数据分割为一个或多个partition,每个topic至少有一个partition,是有序的。一个Topic的多个partitions, 被分布在kafka集群中的多个server上。

PS:消费者数量 <= Partition数量

Replication 副本(备胎)

同个Partition会有多个副本replication ,多个副本的数据是一样的,当其他broker挂掉后,系统可以主动用副本提供服务。

默认每个topic的副本都是1(默认是没有副本,节省资源),也可以在创建topic的时候指定

如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,如果创建副本为4,则会报错

ReplicationLeader、ReplicationFollower

负责Broker所有分区副本信息,Replication 副本状态切换。

ReplicationManager

Partition有多个副本,但只有一个replicationLeader负责该Partition和生产者消费者交互。

ReplicationFollower只是做一个备份,从replicationLeader进行同步。

offset

每个consumer实例需要为他消费的partition维护一个记录自己消费到哪里的偏移offset,kafka把offset保存在消费端的消费者组里

三剑客的架构图

下面来看一下我简单画的架构图。

Broker、Topic和Patition的关系

类比数据库!Broker可以看作数据库,Topic可以看作数据库的表,Patition可以看作分表。

Patition、Consumer Group和Consumer的关系

Consumer Group下订阅的topic的每个Patition只能分配给某个Group下的某个Consumer。不允许同组有多个Consumer进行消费。该Patition可以分配给其他的Group的Consumer,同样只能Group内只能有一个Consumer进行消费。

特点总结

**多订阅者:**一个topic可以有一个或者多个订阅者,每个订阅者都要有一个partition,所以订阅者数量要少于等于partition数量

**高吞吐量、低延迟:**每秒可以处理几十万条消息

**高并发:**几千个客户端同时读写

**容错性:**多副本、多分区,允许集群中节点失败,如果副本数据量为n,则可以n-1个节点失败

**扩展性强:**支持热扩展

基于消费者组可以实现:

**基于队列的模型:**所有消费者都在同一消费者组里,每条消息只会被一个消费者处理

**基于发布订阅模型:**消费者属于不同的消费者组,假如每个消费者都有自己的消费者组,这样kafka消息就能广播到所有消费者实例上

相关推荐
野犬寒鸦3 分钟前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
wenzhangli73 分钟前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
HalvmånEver6 分钟前
Linux:线程互斥
java·linux·运维
rainbow688913 分钟前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
灵感菇_17 分钟前
Java 锁机制全面解析
java·开发语言
indexsunny17 分钟前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
娇娇乔木31 分钟前
模块十一--接口/抽象方法/多态--尚硅谷Javase笔记总结
java·开发语言
TTBIGDATA37 分钟前
【Atlas】Ambari 中 开启 Kerberos + Ranger 后 Atlas Hook 无权限访问 Kafka Topic:ATLAS_HOOK
大数据·kafka·ambari·linq·ranger·knox·bigtop
saber_andlibert43 分钟前
TCMalloc底层实现
java·前端·网络
wangjialelele1 小时前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先