1、kafka架构组成
1.1 Producer
消息生产者,就是向 kafka broker 发消息的客户端
1.2 Consumer
消息消费者,向 kafka broker 取消息的客户端
1.3 Topic
可以理解为一个队列、主题,存放单独主题的数据
1.4 Consumer Group (CG)
消费者组,是kafka实现广播和单播的手段。一个topic可以有可以有很多个消费者组,每个消费者组内的数据都是相同的,可以理解成topic内的数据复制到各个消费者组内,供不同应用程序去消费而互相不受影响。
1.5 Broker
一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic
1.6 Partition
分区,一个topic可以分配到不同的broker上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列,partition 中的每条消息
都会被分配一个有序的 id(offset)。kafka 只保证按一个 partition 中的顺序将消息发给consumer,不保证一个 topic 的整体(多个 partition 间)的顺序。适当增加分区数,可提高消费能力
1.7 Offset
偏移量,记录数据在分区内的具体位置
1.8 Replication
副本,partition 的冗余机制,防止集群内某个节点宕机,造成所有数据不可被消费
2、kafka 特性
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒
- 可扩展性:kafka集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
- 高并发:支持数千个客户端同时读写