这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
今天学习了消息队列的发展历程及各种特点
消息队列:指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式 系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信.
作用:异步,解耦,削峰
RocketMQ特点:
阿里开源
Java语言编写
分布式,高可靠
丰富的队列功能
大规模消息积压
社区活跃,成熟度高
Kafka特点:
LinkedIn开源
Scale、Java语言编写
流式处理
高吞吐、低延迟
大规模消息积压
大数据方面的权威
Pulsar特点:
雅虎开源
Java语言编写
计算存储分离
高吞吐、低延迟
队列模式和流模式
跨地域复制,多租户
Kafka与Pulsar对比:
1.架构
Kafka:brocker和zookeeperk组成
Pulsar:通过分层架构, 将计算和存储分离, 存储采用BookKeeper集群, 计算使用Broker集群, Brocker 需要内置BookKeeper 客户端
2.消息存储模型
Kafka:采用分区Partition的方式保存topic的。
Pulsar:分层
3.消息消费模型
Kafka:消费者组的模式,每一个分区只能给消费者组中的一个消费者消费。
Pulsar:四种
独占模式(Exclusive):同一个topic只能有一个消费者订阅,如果多个消费者订阅,就会出错。
灾备模式(Failover):同一个topic可以有多个消费者订阅,但是只能有一个消费者消费,其他订阅的消费者作为故障转移的消费者,只有当前消费者出了故障才可以进行消费当前的topic。
共享订阅(Shared):同一个topic可以由多个消费者订阅和消费。消息通过round robin轮询机制分发给不同的消费者,并且每个消息仅会被分发给一个消费者。当消费者断开,发送给它的没有被消费的消息还会被重新分发给其它存活的消费者。
Key_Shared:消息和消费者都会绑定一个key,消息只会发送给绑定同一个key的消费者。如果有新消费者建立连接或者有消费者断开连接,就需要更新一些消息的key。