RocketMQ架构原理的示例分析

发布时间:2021-12-18 11:22:21 作者:小新
来源:亿速云 阅读:148

这篇文章给大家分享的是有关RocketMQ架构原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

RocketMQ 架构原理分析

RocketMQ 架构

RocketMQ架构原理的示例分析

NameServer (名称服务器):

Broker(消息服务器): 消息存储中心,接收来自 Producer 的消息并存储, Consumer 从这里取得消息

Producer (生产者):

Consumer(消费者):

Broker Server

Broker Server负责消息的存储和传递,消息查询,HA高可用等,Broker Server几个主要模块组成:

RocketMQ架构原理的示例分析

Remoting Module(远程模块):broker入口,处理来自客户端的请求

Client Manager(客户端管理):管理client(生产者/消费者)并维护消费者的主题订阅

Store Service(存储服务):提供简单的API供给数据库存储或查询消息

HA Service(高可用服务):提供master broker和slave broker之间的数据同步功能

Index Service(索引服务):将message建立索引来提供快速的查询能力

RocketMQ 整体流程

RocketMQ架构原理的示例分析

1.启动 NameServer,NameServer启动后进行端口监听,等待  Broker、Producer、Consumer 连上来,相当于一个路由控制中心

2.Broker 启动,跟所有的 Namesrv 保持长连接,定时发送心跳包

3.收发消息前,先创建 Topic 。创建 Topic 时,需要指定该 Topic 要存储在哪些 Broker上。也可以在发送消息时自动创建Topic

4.Producer 发送消息

5.Consumer 消费消息

RocketMQ Message

RocketMQ架构原理的示例分析

Topic(主题):  表示消息的第一级类型,是最细粒度的订阅单位(生产者传递消息和消费者提取消息标识)

Tag(标签):  表示消息的第二级类型,可以是使用相同的Topic不同的Tag来表示同一业务模块的不同任务的消息,比如交易消息又可以分为:交易创建消息,交易完成消息等

Message(消息体): 消息是要传递的信息。Message中必须包含一个Topic,可选Tag和key-vaule键值对

Message Queue(消息队列): 所有消息队列都是持久化

Group(组): 分为Producer Group(生产者组)和Consumer Group(消费者组),具有相同角色组成Group

RocketMQ 特性

Message Model(消息模式):

Message Order(消息顺序)

如果指定按顺序使用,则消息使用的最大并发度是使用者组订阅的消息队列数

在此模式下不再保证消息顺序

Message Types(消息类型)

RocketMQ单机版安装

1.下载编译源码

# 下载$ > wget wget http://mirror.bit.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-source- > # 解压$ >unzip rocketmq-all-4.7.0-source-release.zip > cd rocketmq-all-4.7.0/ # 编译$ > mvn -Prelease-all -DskipTests clean install -U > cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0

2.启动 Name Server

# 启动 Name Server 服务 > nohup sh bin/mqnamesrv & # 启动完成后,查看日志$ > tail -f ~/logs/rocketmqlogs/namesrv.log The Name Server boot success...

3.启动 Broker

在 conf 目录下,RocketMQ 提供了多种 Broker 的配置文件:

# 启动 Broker服务 > nohup sh bin/mqbroker -n localhost:9876 & # 启动完成后,查看日志$ > tail -f ~/logs/rocketmqlogs/broker.log The broker[%s, 172.30.30.233:10911] boot success...

其中,参数:

4.Send & Receive Messages(消息发送与接收)

在发送/接收消息之前,我们需要告知client(生产者/消费者)Name Servers的地址。RocketMQ提供了多种方法来实现:

为简单起见,我们使用环境变量:NAMESRV_ADDR,如下所示:

# 设置 Name Servers的地址$ > export NAMESRV_ADDR=localhost:9876 # 生产消息$ > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer SendResult [sendStatus=SEND_OK, msgId= ... # 消费消息$ > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ConsumeMessageThread_%d Receive New Messages: [MessageExt...

感谢各位的阅读!关于“RocketMQ架构原理的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. RocketMQ重试机制的示例分析
  2. Hive架构设计及原理的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rocketmq

上一篇:Shiro框架怎么使用

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》