Kafka架构
1)Producer:消息生产者(发布方),就是向kafka broker
发送消息的客户端
2)Consumer:消息消费者(订阅方),向kafka broker
取消息的客户端
3)Consumer Group:消费者组,由多个consumer
组成,消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费,消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者
4)Broker:一台kafka
服务器就是一个borker
,一个集群由多个borker
组成,一个borker
可以容纳多个topic
5)Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic
6)Partition:为了实现扩展性,一个非常大的topic
可以分布到多个broker
上,一个topic
可以分为多个partition
,每个partition
是一个有序的队列
7)Replica:副本,为保证集群中的摸个节点发生故障时,该节点上的partition
数据不丢失且kafka
仍然能够继续工作,kafka
提供副本机制,一个topic
的每个分区都有若干个副本,一个leader
和若干个follower
8)Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象
9)Follower:每个分区多个副本中的“从”,实时从leader
中同步数据,保持和leader
数据的同步,leader
发生故障时,某个follower
会成为新的leader
2.1 Topic
- 逻辑概念,同一个
topic
的消息可分布在一个或多个节点(Broker
)上 - 一个
Topic
包含一个或多个Partition
- 每条消息都属于且仅属于一个
Topic
- 生产者(
Producer
)发布数据时,必须指定将该数据发布到哪一个Topic
- 消费者(
Consumer
)订阅消息时,必须指定订阅的那个Topic
的消息
2.2 Partition
- 物理概念,一个
partition
只分布于一个Broker
上(不考虑备份) - 一个
partition
物理上对应一个文件夹 - 一个
partition
包含多个Segment
- 一个
Segment
对应一个文件 Segment
由一个个不可变记录组成- 记录只会被
append
到Segment
中,不会被单独删除或者修改 - 清除过期日志时,直接删除一个或多个
Segment
2.3 同步发布\异步发布对比
同步发布:Sync Producer
- 低延迟
- 低吞吐率
- 无数据丢失
异步发布:Aync Producer
- 高延迟
- 高吞吐率
- 可能会有数据丢失