Kafka的特性:
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
- 可扩展性:kafka集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
- 高并发:支持数千个客户端同时读写
Consumer Group:
消费者组,消费者组内每个消费者负责消费不同分区的数据,提高消费能力。逻辑上的一个订阅者。
Topic:
可以理解位一个队列,Topic 将消费分类,生产者和消费者面向的是同一个 Topic。
Partition:
为了实现扩展性,提高并发能力,一个 Topic 以多个 Partition的方式分布到多个 Broker 上,每个 Partition
是一个有序的队列。一个 Topic 的每个 Partition 都有若干个副本(Replica),一个 Leader 和若干个
Follower。生产者发送数据的对象,以及消费者消费数据的对象,都是 Leader。 Follower 负责实时从 Leader
中同步数据,保持和Leader 数据的同步。Leader 发生故障时,某个 Follower 还会成为新的 Leader。
Offset:
消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再重新恢复的时候,可以从消费位置继续消费。
Zookeeper:
Kafka 集群能够正常工作,需要依赖于 Zookeeper,Zookeeper帮助 Kafka存储和管理集群信息。Broker
和Topic 注册到 Zookeeper,生成 Znode 的临时节点。Broker 、Topic、Offset
和Partition的关系,包括 Consumer 的关联关系,都是存储到 zk 的。Leader 节点的选举模式也是使用Zookeeper
的选举机制。