-
Notifications
You must be signed in to change notification settings - Fork 55
消息队列的选型
anruence edited this page Nov 17, 2021
·
3 revisions
enode目前支持的消息队列类型:
Kafka
RocketMQ
Pulsar
RocketMQ
相对于Kafka
核心的改进我觉得有以下几点:
- 消息的可靠性,
Kafka
采用的是异步刷盘,有持久化的风险,RocketMQ
则实现了两个,同步和异步,根据场景来tradeoff
-
Kafka
的partition
实际是物理分区,在调整分区时只能增不能减,这种情况下选择合适的分区数据来满足相应的吞吐需要经过精密的计算,RocketMQ
则是在commit_log
之外构建了一套逻辑分区 - 新增了事务消息的实现
- 部署模型,不需要zookeeper,配置时就选择了哪个是主
Pulsar同时兼容流和队列两套模型,更适合云原生的模型,broke设计是无状态的
还有一点,enode实现过程中要保证同一个聚合根顺序消费,但并不要求队列是顺序队列,这个设计把对队列的选择的门槛大大降低
具体的实现是通过聚合根消费消息时在mailbox
保证了消费的顺序