RocketMQ的相关理论&基本概念

1)消息生产者(Producer)
消息一般由业务系统产生,生产者将业务中产生的消息发送给Broker服务器。有多种发送方式:同步发送、异步发送、顺序发送、单向发送,使用同步或异步发送需要Broker返回确认信息。Producer与Name Server的一个随机节点建立长连接,定期从中获取Topic路由信息,并向提供Topic信息的Master建立长连接,且定时向Master发送心跳。

2)消息消费者(Consumer)
消息消费者从Broker服务器拉取消息,并将其提供给程序。从用户应用角度可分为两种消费方式:拉取式消费、推动式消费。Consumer与Name Server中的一个随机节点建立长连接,定期从中获取Topic路由信息,并向提供Topic路由信息的Master和Slave建立长连接,且定时向Master和Slave发送心跳。

3)代理服务器(Broker Server)
消息的中转角色,用来存储和转发消息。负责接收并存储Producer发送的消息,对Consumer发送的消息请求进行消息转发。Broker分为Master和Slave,一个Master可以有多个Slave,一个Slave只能有一个Master,通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0时表示Master,非0时表示Slave。每个Broker与Name Server中的所有节点建立长连接。(注:只有BrokerId=1的Slave才会参与消息的读负载)

4)主题(Topic)
表示一类消息的集合,每条消息只能属于一个Topic,一个Topic可以有多条消息,是RocketMQ进行消息订阅的基本单位。

5)名称服务(Name Server)
名称服务充当路由消息的提供者,Producer和Consumer通过名称服务查找各Topic所对应的Broker服务器。多个实例可组成集群,相互之间独立。

6)标签(Tag)
为消息设置的标识,用来区分同一Topic下不同类型的消息

7)消息队列(Message Queue)
Topic由一个或多个队列组成,Producer的发送机制使得消息尽量平均分布在多个队列中。RocketMQ保证的消息有序即分区(queue)消息的有序。

2.工作流程
启动Name Server,启动后监听端口,等待Broker、Producer、Consumer的连接,相当于路由控制中心;
启动Broker,跟所有的Name Server节点建立长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP + 端口)以及存储所有Topic信息。注册成功后,Name Server就有Topic跟Broker的映射信息;
收发消息前,先创建Topic,创建时需要指定该Topic存储在那些Broker上,也可以在发送消息时自动创建Topic;
Producer发送消息,启动时先和Name Server中的一个节点建立长连接,并从Name Server中获取当前发送的Topic所对应的Broker,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接并发送消息。
Consumer消费消息,启动时先和Name Server中的一个节点建立长连接,并从Name Server中获取当前订阅的Topic所对应的Broker,然后跟Broker建立连接通道,并进行消费。

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » RocketMQ的相关理论&基本概念

提供最优质的资源集合

立即查看 了解详情