kafka: 分布式消息系统、消息队列,将消息直接存入磁盘,默认保存一周。
broker: 组成kafka集群的节点,之间没有主从关系,依赖于zookeeper来协调,而broker负责消息的读写和存储,一个broker可以管理多个partition。
producer: 消息的生产者,自己决定向哪个partition去生产消息,两种机制:hash、轮循。

consumer: 消息的消费者,consumerf通过zookeeper去维护消费者偏移量。consumer有自己的消费者组,不同的组之间消费同一个topic数据,互不影响,相同的组内的不同的xonsumer消费同一个topic,这个topic中相同的数据只能被消费一次。consumer只能先消费已经链接上的partition上的数据。
topic: 一类消息的总称/一个消息队列。topic是由partition组组成的,个数是创建的时候指定。
partition: 组成topic的单元,每个partition有副本,副本的个数是创建的时候指定,每个partiton只能由一个broker来管理,这个broker是这个partition的leader。partition内部消息是强有序的,其中每个消息都有一个序号叫offset。
zookeeper: 协调kafka broker,存储元数据:consumer的offset+broker信息+topic信息+partition信息
Kafka的消息存储和生产消费模型
-
- kafka里面的消息是由topic来组织的,可以想象为一个队列,一个队列就是一个topic,谈后它把每个topic又分为多个partition,这个是为了做并行处理,在每个partition里面是有序的,相当于有序的队列,其中每个消息都有个序号,比如0到12.
- 一个partition对应一个broker,一个broker可以管多个partition,比如一个topic有5个partiton,有两个broker,那每个broker就管2个partiton。
- partition可以想象为一个文件,当数据发过来的时候它就往这个partition上面append追加数据。而且kafka是根据时间策略删除数据,而不是消费完就删除,在kafka里面没有“消费完”这个概念,只有“过期“这一个概念,默认保存一周。
- consumer自己维护消费到哪个offset
- 每个consumer都有对应的group,不指定有人的组。
- group内的queue消费模型
- 各个consumer消费不同的partition
- 一个消息只能被一个group 内的一个消费者消费一次
- 各个group各自独立消费,互不影响。
kafka的特点
- 分布式、数据副本,同一份数据可以到不同的broker上面去,就是当一份数据,当磁盘坏掉的时候,数据不会丢失,比如3个副本,这样当在3个机器磁盘都坏掉的时候数据才会丢失。
- 消息持久化时间跨度比较长、消费状态自己可以维护消费到哪个地方了,可以自定义消费偏移量。
创建topic


- topic的名字是t04
- 3个分区
- 每个分区3个副本


- 指定topic
- broker-list 集群节点

- 指定topic


元数据



如果producer生产的时候没有key,会每隔10分钟随机指定一个分区。上图给的是0号分区。


Leader均衡机制

- 0号分区归属于2号节点
- 1号分区归属于0号节点
- 2号分区归属于1号节点
- 0号分区的副本Replicas分布在0号、1号、2号节点上。
- Isr的功能是挂掉的节点重活后检查数据的完整性。
- 当节点broker挂掉后,分区会按照副本顺序重新寻找新的leader.
- leader重活后,分区会自动再找到原来归属于重活后的leader,释放刚寻找的新的leader。(压力均衡)
删除topic



立马删除topic


这个时候就彻底删除了topic。
给你点赞
还可以