内容来源:https://www.cnblogs.com/qingyunzong/p/9004509.html
1.2 消息系统介绍
一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式。
1.3 点对点消息传递模式
1、生产者发送一条消息到queue
2、一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除
3、即使有多个消费者同时消费数据,也能保证数据处理的顺序
1.4 发布-订阅消息传递模式
1、发布者发送到topic的消息
2、消费者可以订阅一个或多个topic,
3、同一条数据可以被多个消费者消费,数据被消费后不会立马删除
四、Kafka中的术语解释
4.2 broker
Kafka 集群包含一个或多个服务器,服务器节点称为broker。
broker存储topic的数据。1、topic中的最小单位是partition;2、每个broker中存储一个或多个partition;3、partition在broker中尽量均匀分部。
4.3 Topic和partition
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
topic中的数据分割为一个或多个partition。每个topic至少有一个partition。每个partition中的数据使用多个segment文件存储。
partition中的数据是有序的,不同partition间的数据是无序的。
在需要严格保证消息的消费顺序的场景下,需要将partition数目设为1。
4.7 Leader
每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数据的读写的partition。
4.8 Follower
Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步。如果Leader失效,则从Follower中选举出一个新的Leader。当Follower与Leader挂掉、卡住或者同步太慢,leader会把这个follower从“in sync replicas”(ISR)列表中删除,重新创建一个Follower。
1.2 Kafka的使用场景:
Kakfa Broker集群受Zookeeper管理
所有的Kafka Broker节点一起去Zookeeper上注册一个临时节点,因为只有一个Kafka Broker会注册成功,其他的都会失败,所以这个成功在Zookeeper上注册临时节点的这个Kafka Broker会成为Kafka Broker Controller,其他的Kafka broker叫Kafka Broker follower。