RocketMq
RocketMq分为四个组件: NameServer \ Broker \ Producer \ Consumer
-
NameServer提供轻量级的服务发现和路由,每个NameServer记录完整的路由信息,提供等效的读写服务,支持快速的存储扩展
-
Broker 通过提供轻量级的topic和queue机制提供消息的存储能力,支持消息的push和pull模式,通过备份机制实现容错能力,提供容灾能力、丰富的指标统计和告警机制。
-
Producer: producer的分布式部署, 分布式环境下producer通过负载均衡策略向Broker发送消息
-
Consumer: consumer的分布式部署,支持集群消费和广播消费
核心概念:
a. producer有多种发送策略: synchronous, asynchronous, one-way
b. consumer分为PullConsumer和PushConsumer, PushConumser就是consumer注册回调方法,message到达Broker之后通过回调将消息推给consumer
c. message: message就是一条消息,必须指定一个topic,可以带有tag或者key-value键值对
d. message queue: 类似于kafka的partition,不同的topic会被划分到一个或者多个queue中
e. message order: 分为顺序消费和并发消费,如果需要顺序消费则改topic应该只有一个queue。同时消息消费的最大并发是该队列被订阅的消费者数量
f. 事务消息:rockerMq支持事务消息,大致原理是producer先发送prepared消息到broker,然后执行本地事务,成功则通过第一阶段的回调地址修改消息的状态