这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
今日继续学习消息队列,仍然基于大项目需求,笔记内容均来自青训营消息队列ppt
Kafka
特点:
- Linkedln开源
- Scale,java语言编写
- 流式处理
- 高吞吐,低延迟
- 大规模消息积压
- 大数据方面的权威
kafka架构
- Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker。
- Topic:Kafka集群的消息都有一个类别
- Partition:每个topic包含一个或多个partition
- Replica:partition的副本,保障partition的高可用
- Controller:Kafka集群中的其中一个服务器,用来进行leader election以及各种failover
- ISR: n sync replica,和partition leader保持同步的副本,保障partition的高可用
- producer:往kafka发送消息的用户
- consumer:接收kafka消息的用户
消费模式:
- 点对点模式;消费者一对一的主动拉取数据,消息收到后消息清除。消息只能被一个且只有一个消费者接收处理。
- 发布订阅模式:一对多的,数据产生后推送给所有订阅者,基于推送的消息传送模型。
分布式模型:
kafka的每个主题的多个分区日志分布式的存储在kafka集群上,每个分区都会以副本的方式复制到多个消息代理节点上。其中一个副本会作为leader,其他副本作为follower。leader负责所有的读写操作,follower从leader备份数据,leader出现故障时,就会再找一个follower升级为leader。 每个分区的副本中只有主副本接收读写,所以每个服务器端都会作为某些分区的主副本,以及另外一些分区的备份副本,这样kafka集群的所有服务端整体上对客户端是负载均衡的。
总结:
后续还需和rocketmq以及rabbitmq进行对比。