Kafka本身的架构

网友投稿 266 2022-11-16

Kafka本身的架构

Producer(生产者)生产消息以Topic(主题)为单位进行存储.消费者组订阅主题消费内容.

Producer生产者写数据可能写到TopicA-Partition0 分区 ,也可能写到 TopicA-Partition1分区, 也可以指定只写到哪个分区也是可以的.如果你不指定写哪个分区,你只是指定写到TopicA主题,那么就会采取轮询的策略,把数据轮流放到TopicA主题下的所有分区里面.

为了方便我的消费,以及提高消费的速度,我们是有消费者组的概念,一个组可以有多个消费者线程,一个Group组可以同时订阅多个Topic主题,多个Group也可以同时订阅多个主题.

每个Group里面各有三个Consumer消费者,TopicA下的所有分区的数据都会分配到多个消费者线程上面. 同时是互斥的同一时刻一个主题只能由一个Group内的一个Consumer来消费 ,

同时一个Consumer可以同时消费多个主题的,就是我既可以拿TopicA-Partition0的数据,也可以拿TopicA-Partition1的数据.

不能一个Group里面的两个Consumer同时拿TopicA-Partition0里面的数据.这是不能允许的.

分区可以分散到多个Broker中的

多个Broker可以组成一个集群.

为了提高可用性,可以为分区增加副本,比如说TopicA-Partition0存到了Broker0和Broker2上.这样保证数据的可用性和安全性.

有了副本概念,客户端只能向Leader发送请求,比如说读取TopicA-Partition0的数据,就得看谁是Leader了, 假如说broker0是Leader,那么不管是Producer还是Consumer只能请求Leader角色的broker0机器, 然后broker2就是follower机器,它会发送fetch请求从leader角色的broker0机器上同步TopicA-Partition0数据.

另外Kafka集群需要借助Zookeeper的 ,你Broker运行期间需要给数据存到Zookeeper上的.比如说Topic叫什么名字,有多少分区等等,这些元数据都需要存到Zookeeper里面.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:快对号入座,帮你找准现阶段最适合自己的固态硬盘!
下一篇:Kafka核心概念
相关文章

 发表评论

暂时没有评论,来抢沙发吧~