码迷,mamicode.com
首页 > 其他好文 > 详细

RocketMQ(1)---架构原理及环境搭建

时间:2020-06-21 15:31:30      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:bin   地方   客户   数据   消息发送   简单   创建   jvm参数   mes   

一、架构简述

RocketMQ阿里开源的一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性, 万亿级容量和灵活的可伸缩性。跟其它中间件相比,RocketMQ的特点是JAVA实现,在发生宕机和其它故障时消息丢失率更低

它由四个部分组成:nameserver,broker,生产者和消费者。它们中的每一个都可以水平扩展,而没有单个故障点。  

Nameserver:提供轻量级的服务发现和路由。生产者和消费者通过nameserver获取broker信息。它几乎是无状态的,nameserver结点之间没有任何的数据同步,broker注册信息时会注册到每一个nameserver结点上面,所以每个nameserver节点都记录了完整broker信息,提供相应的读写服务,并支持快速的存储扩展。

Broker:通过提供轻量级的topic和queue机制来存储消息。与nameserver中的每个节点建立长连接,定时注册topic等信息到nameserver上面。broker一般都是主从模式,因为消息是真实存储消息的地方,避免一个结点挂了,导致这个节点数据全部丢失。

Producer:与nameserver集群中的一个结点建立长连接,定期的拉取broker 的topic路由信息,再将消息发送到对应broker的topic上面

Consumer:与nameserver集群中的一个结点建立长连接,定期的拉取broker 的topic路由信息,再去消费对应broker的topic信息

技术图片

 

 

二、环境搭建

 1.官网下载:http://rocketmq.apache.org/release_notes/release-notes-4.7.0/

2.解压 unzip rocketmq-all-4.7.0-bin-release.zip

3.修改启动参数配置。默认的jvm参数内存设置特别大,如果自己机器不行的话需要手动改下bin目录下的启动参数文件:runbroker.sh 和runserver.sh文件 我的虚拟机内存分配不大,改成256m 256m 128m

技术图片   这是默认的

 

 

4.启动nameserver: nohup sh mqnamesrv ‐n 192.168.0.67:9876 &   (将日志输出当前目录的nohub.out文件,方便查看启动日志,ip是当前机器的ip)

技术图片

 

 

 

 5.启动broker:nohup sh mqbroker ‐n 192.168.0.67:9876 autoCreateTopicEnable=true &  (autoCreateTopicEnable=true 自动创建topic,如果不设置true的话,生产者发送消息的时候如果没有topic就会发送失败,需要提前把topic创建好,设置true会在发送时自动创建topic,192.168.0.67:9876 是name server)

也可以使用配置文件启动broker:nohup sh mqbroker ‐n 192.168.0.67:9876 ‐c conf/broker.conf &

简单看下默认的配置文件中的一些参数:

#集群名字
brokerClusterName = DefaultCluster
#broker名字,集群中主从都要用这个名字,才会组成一个集群
brokerName = broker-a
#id为0的是master  非0的slava
brokerId = 0
#消息处理时间,凌晨4点
deleteWhen = 04
#消息保存时间默认48小时,48小时之后的凌晨4点就会清理
fileReservedTime = 48
#集群主从之间数据同步方式 
#异步只需要发到master成功就返回客户端段成功,性能高,但是如果master挂了 slave还未同步就会丢失消息。根据自身业务场景选择合适方式
brokerRole = ASYNC_MASTER
#消息刷盘机制,和主从数据同步类似,同步就是说需要写进磁盘了才返回成功。异步就是写进内存了就返回成功,后面再去落盘。
flushDiskType = ASYNC_FLUSH
#自动创建topic
autoCreateTopicEnable=true

使用配置文件启动:nohup sh bin/mqbroker ‐n 192.168.0.67:9876 -c conf/broker.conf &

broker 192.168.0.67:10911关联的nameserver是192.168.0.67:9876

技术图片

 

 

至此一个单机的rocketMQ的环境就搭建好了   正常退出: sh mqshutdown broker  和  sh mqshutdown namesrv

 

测试下消息发送,使用rocketMQ提供的测试脚本:

export NAMESRV_ADDR=192.168.0.67:9876

生产者脚本

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
消费者脚本
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
发送消息:
 
技术图片

 

 消费消息:

技术图片

 

 

RocketMQ(1)---架构原理及环境搭建

标签:bin   地方   客户   数据   消息发送   简单   创建   jvm参数   mes   

原文地址:https://www.cnblogs.com/nijunyang/p/13167027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!