一、架构简述

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)---架构原理及环境搭建的更多相关文章

  1. Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevTools,Git使用教程,Github入门,界面设计介绍

    系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(L ...

  2. RocketMQ(1)-架构原理

    RocketMQ(1)-架构原理 RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现:集群和HA实现相对简单:在发生宕机和其它故障时消息丢失率更低. ...

  3. 你懂RocketMQ 的架构原理吗?

    前言 前面我们跟大家聊了聊什么是消息中间件,以及哪些场景使用哪些消息中间件更加合适. 我们了解到RocketMQ是java语言开发的,我们能更深入的阅读源码了解它的底层原理,而且它具有优秀的消息中间件 ...

  4. RocketMQ在Windows平台下环境搭建

    一.  环境搭建 需要jdk1.6(以上) 64bit, maven, eclipse 二.  RocketMQ项目下载 项目地址:https://github.com/alibaba/RocketM ...

  5. RocketMQ在linux平台下环境搭建

    RocketMQ在linux下部署运行和window类似,只不过启动namesrv和broker是通过mqnamesrv.sh 和 mqbroker.sh来启动的. 一.  环境搭建 需要jdk1.6 ...

  6. 基于Selenium2+Java的UI自动化(1) - 原理和环境搭建

    一.Selenium2的原理 Selenium1是thoughtworks公司的一个产品经理,为了解决重复烦躁的验收工作,写的一个自动化测试工具,其原理是用JS注入的方 式来模拟人工的操作,但是由于J ...

  7. springmvc工作原理和环境搭建

    SpringMVC工作原理     上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServle ...

  8. monkey 原理,环境搭建、命令详解

    一.monkey测试的相关的原理 monkey测试的原理就是利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常.当Monkey程序在模拟器或设备运行的时候, ...

  9. 1.appium工作原理及环境搭建

    1.appium: 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. 2.工作原理: 3.搭建appium环境: (1)安装python和nod ...

随机推荐

  1. SqlServer2008查询性能优化_第一章

  2. 理解session及微信小程序使用session

    session介绍 由于Http是无状态的协议,所以服务端需要记录用户的状态时,就需要某种机制来识别具体的用户,实现这个机制的方式就是session. 典型的场景比如购物车,当你点击下单按钮时,由于H ...

  3. Docker 笔记一相关命令

    Centos 7 : Service network restart 重启网络 Ip addr 查看ip地址 Uname -r 查看内核版本 Yum install docker 安装docker 命 ...

  4. 非阻塞赋值(Non-blocking Assignment)是个伪需求(2)

    https://mp.weixin.qq.com/s/5NWvdK3T2X4dtyRqtNrBbg   13hope: 个人理解,Verilog本身只是“建模”语言.具体到阻塞/非阻塞,只规定了两种赋 ...

  5. Chisel3 - model - 子模块,顶层模块

    https://mp.weixin.qq.com/s/3uUIHW8DmisYARYmNzUZeg   介绍如何构建由模块组成的硬件模型.   1. 子模块   一个模块可以有一个或多个子模块,创建子 ...

  6. CVE-2020-0796永恒之黑复现POC EXP以及修复方案

    描述: 北京时间3月12日,针对最新披露的SMB远程代码执行漏洞(CVE-2020-0796),微软官方发布了针对Windows 10/Server禁用SMBv3(SMB 3.1.1版本)协议压缩的安 ...

  7. [译]深入理解JVM Understanding JVM Internals

    转载: 英文原版地址:http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals/ 翻不了墙的可以看这个英文版:https: ...

  8. Java实现 洛谷 采药

    题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...

  9. Java实现k个数乘(cheng)(自然数的k乘积问题)

    k个数乘(cheng) 题目描述 桐桐想把一个自然数N分解成K个大于l的自然数相乘的形式,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-l)个数是N分解出来的最小自然数.例如:N=24, ...

  10. Java实现 LeetCode 8 字符串转换整数(atoi)

    8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非 ...