Kafka本身的架构

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里面.

Original: https://blog.51cto.com/u_14861909/5439589
Author: wx5efd5423d18bb
Title: Kafka本身的架构

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516796/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球