kafka的架构(kafka的架构包括哪些组件)
架构案例
Kafka Cluster: 由多个服务器组成。每个服务器单独的名字broker(掮客)。
kafka broker: kafka集群中包含的服务器
Kafka Producer: 消息生产者、发布消息到kafka集群的终端或服务。
Kafka consumer: 消息消费者、负责消费数据。
Kafka Topic: 主题,一类消息的名称。存储数据时将一类数据存放在某个topci下,消费数据也是消费一类数据。
订单系统:创建一个topic,叫做order。
用户系统:创建一个topic,叫做user。
商品系统:创建一个topic,叫做product。
注意:Kafka的元数据都是存放在zookeeper中。
架构剖析
kafka架构的内部细节剖析:
说明:kafka支持消息持久化,消费端为拉模型来拉取数据,消费状态和订阅关系有客户端负责维护,消息消费完 后,不会立即删除,会保留历史消息。因此支持多订阅时,消息只会存储一份就可以了。
Broker:kafka集群中包含一个或者多个服务实例,这种服务实例被称为Broker
Topic:每条发布到kafka集群的消息都有一个类别,这个类别就叫做Topic
Partition:分区,物理上的概念,每个topic包含一个或多个partition,一个partition对应一个文件夹,这个文件夹下存储partition的数据和索引文件,每个partition内部是有序的
关系解释
Topic & Partition
Topic就是数据主题,是数据记录发布的地方,可以用来区分业务系统。
Kafka中的Topics总是多订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。
一个topic为一类消息,每条消息必须指定一个topic。
对于每一个topic, Kafka集群都会维持一个分区日志。如下图
每个分区都是有序且顺序不可变的记录集,并且不断地追加到结构化的commit log文件。
分区中的每一个记录都会分配一个id号来表示顺序,称之为offffset,offffset用来唯一的标识分区中每一条记录。
在每一个消费者中唯一保存的元数据是offffset(偏移量)即消费在log中的位置,偏移量由消费者所控制:通常在读取记录后,消费者会以线性的方式增加偏移量,但是实际上,由于这个位置由消费者控制,所以消费者可以采用任何顺序来消费记录。例如,一个消费者可以重置到一个旧的偏移量,从而重新处理过去的数据;也可以跳过最近的记录,从"现在"开始消费。
这些细节说明Kafka 消费者是非常廉价的—消费者的增加和减少,对集群或者其他消费者没有多大的影响。
作者:RG
链接:https://juejin.cn/post/7030730856771616775