#前言
刚开始了解Kafka时对其中多个名词表示懵逼,broker是啥?咋还有分区?有没有跟和我一样有很多???本文就我对Kafka的理解梳理各个角色以及功能,欢迎大家一起来沟通交流。
废话不多说,上图:
按照自己的理解画一个简单的Kafka架构模型,下面分别说明Zookeeper、Produce、Broker、Replica、Customer、Customer Group 、Topic、Partition在Kafka中的作用以及如何交互。当然,功能远远不止这些。
作为生产者,它的作用就是将消息成功发送指定的Topic中,消息投递的可靠度、顺序性由Produce决定。
Topic被称为主题,在kafka中是一个逻辑概念,物理上同一个Topic的消息会存储在不同个broker上,真正意义上的分布式消息中间件。通常以topic划分消息所属类别,起业务隔离作用。
如上图所示,Broker以Topic为单位将消息分摊在不同分区,每个分区都有leader和副本。那为什么会有分区?这是因为如果topic内的消息只存储于一个broker,那这个broker终会成为瓶颈,无法做到水平扩展。此外在分区使用中需要注意的事项:
kafka的副本机制指的是分区的副本而不是broker,副本通常存放在和leader不同的broker中。如上述Partition注意事项2,副本如何同步数据以保证数据的可靠性和一致性?
在kafka中一个分区的消息只能被一个消费组中的一个消费者消费,不然会破坏分区中消息的消费顺序,但是避免不了一条消息会被多个地方使用的场景,所以有消费组的概念。消费者在进行消费时可以指定一个消费组,同一条消息在被多个消费组消费时就达到消息“广播”的功能。
Zookeeper在kafka中主要起到两个作用,一是存储broker、topic、partition等元数据信息,二是协调如broker的controller、partition的leader等选举过程。
OK,至此已经大致了解了kafka,总结一下:
欢迎大家一起来沟通交流。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。