Rocketmq中的基本概念(一)
- 站在生产者的角度来看
同步发送:需要等待发送结果的返回。
异步发送:不需要等待发送结果的返回,完成发送消息以后可以回调本地的方法来做业务逻辑.
单向发送:不需要等待发送结果的返回。
- 站在Broker的角度来看
无论那种发送消息的方式,最后都是Broker来存储的,在存储的时候,有两个比较关键的处理.
第一:根据配置文件,可以选择全局性的同步刷盘或者异步刷盘
第二:在配置了全局同步刷盘的前提下,又允许每个消息自己设置是否需要同步刷盘
消费者(Consumer)
负责消费消息,RocketMq提供了两种消费形式:拉取式消费、推动式消费。
- 拉取式消费
应用主动从Broker服务器拉消息、主动权由应用控制。一旦获取了批量消息,应用就会启动消费过程。
- 推动式消费
Broker收到数据后会主动推送给消费端,该消费模式一般实时性较高
主题(Topic)
每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息消费的最小单元(意思就是说消费消息的时候必须根据主题来)。
Broker Server
负责存储消息和以及一些查询消息的功能。
Name Server
提供消息的路由服务,客户端查根据topic能够查询到Broker的地址列表
Producer Group
相同Producer的集合,这类Producer发送同一类消息且发送逻辑一致.(例如你的集群中一个支付服务有12台机器,这个12台机器中的每个Producer发送的消息的逻辑都是一样的)
Consumer Group
相同Consumer的集合,这类Consumer通常消费同一类消息且消费逻辑一致。(例如你的集群中一个支付服务有12台机器,这个12台机器中的每个Consumer消费消息的逻辑都是一样的).
支持两种消息模式:集群消费和广播消费
- 集群消费
相同Consumer Group的每个Consumer实例平均分摊消息
- 广播消费
相同Consumer Group的每个Consumer实例都接收全量的消息.(这种情况下特别要注意幂等,实际上消费消息的时候都要做接口的幂等,不然可能会出现重复消息的问题)
普通顺序消息
Consumer通过同一个消费队列收到的消息是有顺序的,不同消息队列收到的消息则可能是无顺序的。
严格顺序消息
消费者收到的所有消息均是有顺序的。
Tag
为消息设置的Tag,用于同一主题下区分不同类型的消息。消费者可以根据Tag实现对同一主题的不同消费逻辑,实现更好的扩展性。(例如每个微服务一个topic 不同的场景使用tag 来区分,)
参考资料
http://rocketmq.apache.org/
以上是 Rocketmq中的基本概念(一) 的全部内容, 来源链接: utcz.com/z/513998.html