消息队列笔记 | 青训营笔记

53 阅读2分钟

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