Kafka_基础
Kafka的定义
一个分布式、分区的、多副本的、多订阅者,基于 Zookeeper 协调的分布式日志系统。采用发布-订阅模式。

Kafka的优点
- 解耦。
- 冗余(副本)。
- 扩展性。
- 灵活性&峰值处理能力。
- 可恢复性。
- 顺序保证。
- 缓冲。
- 异步通信。
Kafka中的术语
- 整体

- Broker
Kafka集群包含一个或多个服务器,服务器节点称为Broker。
Broker 存储 Topic 的数据。如果某 Topic 有 N 个 Partition,集群有 N 个 Broker,那么每个 Broker 存储该 Topic的一个 Partition。
如果某 Topic 有 N 个 Partition,集群有(N+M)个 Broker ,那么其中有 N 个 Broker 存储该 Topic 的一个 Partition ,剩下的 M 个 Broker 不存储该 Topic 的 Partition数据。
如果某 Topic 有 N 个 Partition ,集群中 Broker数目少于 N个,那么一个 Broker 存储该 Topic 的一个或多个 Partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致 Kafka集群数据不均衡。
- Topic
每条发布到 Kafka集群的消息都有一个类别,这个类别被称为 Topic。
- Partition
Topic 中的数据分割为一个或多个 Partition。每个 Topic 至少有一个 Partition。每个 Partition 中的数据使用多个 Segment 文件存储。Partition 中的数据是有序的,不同 Partition间的数据丢失了数据的顺序。如果 Topic 有多个 Partition,消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将 Partition数目设为1。
- Producer
生产者即数据的发布者,该角色将消息发布到 Kafka 的 Topic中。Broker 接收到生产者发送的消息后,Broker 将该消息追加到当前用于追加数据的 Segment文件中。生产者发送的消息,存储到一个Partition 中,生产者也可以指定数据存储的 Partition。
- Consumer
消费者可以从 Broker中读取数据。消费者可以消费多个Topic 中的数据。
- Consumer 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。