# 背景
kafka是一种分布式的基于发布与订阅的消息队列。
异步处理
用户请求服务后需等待服务完成再得到结果信息,这是同步处理。对于异步处理,用户提交请求后,请求放入消息队列后,无需等待执行完成,用户即可结束进程。异步处理可以实现解耦,异步通信,缓冲缓解服务器压力,提高灵活性和峰值处理能力。
消息队列的两种模式
1点对点模式
一对一,消费者主动拉取数据,消息收到后清楚,即一个消息对应一个消费者。
2发布订阅模式
此模式又分为消费者主动拉取和队列主动推送,推送速度有不同的角色决定。
生产者发布消息到topic中,一个消息可以对应多个消息订阅者。
kafka是基于发布订阅模式的消费者拉取。
消费者主动拉取模式
消费者需要主动询问是否有我的消息,执行了长轮询,消耗资源。
队列主动推送模式
消费者性能有差别,队列推送要满足不同的速度。
kafka
kafka基础架构
生产者生产消息 kafka集群管理消息 消费者消费消息 Zookeeper注册消息
kafka集群管理消息
kafka由多个broker构成,每个broker由topic和partion构成,一个topic可以有多个partion,由partion编号进行区分。每个topic的partion有多个,分布在不同机器上,他们有一个leader,当leader无法服务后,由其他机器上的follower代理。
消费者消费消息
consumer group
同一个分区的数据只能被同一个cg里的一个消费者消费。