Kafka术语学习
- broker
- Kafka集群包含一个或多个服务器,服务器节点称为broker
- Topic
- 每条发不到Kafka集群的消息都有一个类别,这个类别称为Topic。(类似于数据库的表名)
- Partition
- topic中的数据分割为一个或多个partition。每个topic至少有一个partition,每个partition中的数据使用多个segement文件存储。partition中的数据是有序的,不同partition间的数据丢失了数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将partition的数目设为1.
- Consumer
- 消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。
- Comsumer Group
- 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
- Leader
- 每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数据的读写的partition。
- Follower
- Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步。如果Leader失效,则从Follower中选举出一个新的Leader。当Follower与Leader挂掉、卡住或者同步太慢,leader会把这个follower从“in sync replicas”(ISR)列表中删除,重新创建一个Follower。
两种信息模式
P2P模式
包含三个角色:消息队列、发送者、接收者
- 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
- 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列
- 接收者在成功接收消息之后向队列应答成功
Pub/sub模式
包含三个角色:主题、发布者、订阅者
- 每个消息可以有多个消费者
- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅之后,才能消费发布者的消息。
- 为了消费消息,订阅者必须保持运行的状态。