消息队列继续学习2 | 青训营笔记

42 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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消息的用户 image.png

消费模式:

  • 点对点模式;消费者一对一的主动拉取数据,消息收到后消息清除。消息只能被一个且只有一个消费者接收处理。
  • 发布订阅模式:一对多的,数据产生后推送给所有订阅者,基于推送的消息传送模型。

分布式模型:

kafka的每个主题的多个分区日志分布式的存储在kafka集群上,每个分区都会以副本的方式复制到多个消息代理节点上。其中一个副本会作为leader,其他副本作为follower。leader负责所有的读写操作,follower从leader备份数据,leader出现故障时,就会再找一个follower升级为leader。 每个分区的副本中只有主副本接收读写,所以每个服务器端都会作为某些分区的主副本,以及另外一些分区的备份副本,这样kafka集群的所有服务端整体上对客户端是负载均衡的。

总结:

后续还需和rocketmq以及rabbitmq进行对比。