Skip to content

消息队列的选型

anruence edited this page Nov 17, 2021 · 3 revisions

enode目前支持的消息队列类型:

  • Kafka
  • RocketMQ
  • Pulsar

RocketMQ相对于Kafka核心的改进我觉得有以下几点:

  1. 消息的可靠性,Kafka采用的是异步刷盘,有持久化的风险,RocketMQ则实现了两个,同步和异步,根据场景来tradeoff
  2. Kafkapartition实际是物理分区,在调整分区时只能增不能减,这种情况下选择合适的分区数据来满足相应的吞吐需要经过精密的计算,RocketMQ则是在commit_log之外构建了一套逻辑分区
  3. 新增了事务消息的实现
  4. 部署模型,不需要zookeeper,配置时就选择了哪个是主

Pulsar同时兼容流和队列两套模型,更适合云原生的模型,broke设计是无状态的

还有一点,enode实现过程中要保证同一个聚合根顺序消费,但并不要求队列是顺序队列,这个设计把对队列的选择的门槛大大降低 具体的实现是通过聚合根消费消息时在mailbox保证了消费的顺序

Clone this wiki locally