消息队列是生产者向消息队列发送消息,消费者从消息队列拉取(pull)消息。
生产者
生产者是消息队列的数据源,可以向其发送消息,如字符串、二进制数据等。消费者
消费者的数据源就是Kafka,于是通过Kafka实现了生产者和消费者两个系统的解耦。broker
部署了Kafka的server称为broker。Kafka分布式部署就有多台broker。主题topic
- topic是字符串,它将消息进行分类、存储
- 多个生产者可以向同一个topic发送消息
- 多个消费者可以订阅同一个topic
- 每一条消息一定属于某一个topic
- 一个topic可以包含多个消息
- 通过topic可以实现生产者和消费者之间有针对性的发送和订阅
- 消息
- 消息必须指定属于哪个topic
- 由key和value构成。key用来将消息分配到topic的指定分区中。
Kafka集群
由多台broker组成,它们之间通过心跳检测其他机器状态。控制器
- 多台broker中会有一台broker作为控制器,它管理Kafka的分区、副本等。
- 其他borker会监听控制器的状态,当前控制器异常时会使用选举算法选出新的控制权。
- 消费者组
- 一个消费者只能属于一个消费者组
- 单播:消费者组所订阅的topic只能由其中的一个消费者消费。订阅同一topic的多个消费者组互不影响。
- 广播:多个消费者消费同一个topic,那它们一定属于不同的消费者组。