阿里巴巴有2大核心的分布式技术,一个是OceanBase,另一个就是RocketMQ。在实际项目中已经领教过RocketMQ的强大,本人计划写一个RocketMQ实战系列,将涵盖RocketMQ的简介,环境搭建,初步使用、API详解、架构分析、管理员集群操作等知识。

What is RocketMQ?

RocketMQ作为一款分布式的消息中间件(阿里的说法是不遵循任何规范的,所以不能完全用JMS的那一套东西来看它),经历了Metaq1.x、Metaq2.x的发展和淘宝双十一的洗礼,在功能和性能上远超ActiveMQ。

1.要知道RocketMQ原生就是支持分布式的,而ActiveMQ原生存在单点性。

2.RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证!

3.RocketMQ提供亿级消息的堆积能力,这不是重点,重点是堆积了亿级的消息后,依然保持写入低延迟!

4.丰富的消息拉取模式(Push or Pull)

Push好理解,比如在消费者端设置Listener回调;而Pull,控制权在于应用,即应用需要主动的调用拉消息方法从Broker获取消息,这里面存在一个消费位置记录的问题(如果不记录,会导致消息重复消费)。

5.在Metaq1.x/2.x的版本中,分布式协调采用的是Zookeeper,而RocketMQ自己实现了一个NameServer,更加轻量级,性能更好!

6.消息失败重试机制、高效的订阅者水平扩展能力、强大的API、事务机制等等(后续详细介绍)

初步理解Producer/Consumer Group

ActiveMQ中并没有Group这个概念,而在RocketMQ中理解Group的机制很重要。

Group机制

想过没有,通过Group机制,让RocketMQ天然的支持消息负载均衡!

比如某个Topic有9条消息,其中一个Consumer Group有3个实例(3个进程 OR 3台机器),那么每个实例将均摊3条消息!(注意RocketMQ只有一种模式,即发布订阅模式。)

install RocketMQ

RocketMQ的Broker集群部署模式还挺多的,比如单Master模式、多Master模式、多Master多Slave模式(异步复制)、多Master多Slave模式(同步双写)等。明确个概念,RocketMQ Slave不可以写,可以读,类似于MySQL的主从机制。

单Master模式:

无需多言,一旦单个broker重启或宕机,一切都结束了!很显然,线上不可以使用。

多Master模式:

全是Master,没有Slave。当然,一个broker宕机了,应用是无影响的,缺点在于宕机的Master上未被消费的消息在Master没有恢复之前不可以订阅。

多Master多Slave模式(异步复制):

多对Master-Slave,高可用!采用异步复制的方式,主备之间短暂延迟,MS级别。Master宕机,消费者可以从Slave上进行消费,不受影响,但是Master的宕机,会导致丢失掉极少量的消息。

多Master多Slave模式(同步双写):

和上面的区别点在于采用的是同步方式,也就是在Master/Slave都写成功的前提下,向应用返回成功,可见不论是数据,还是服务都没有单点,都非常可靠!缺点在于同步的性能比异步稍低。

这里我将采用2个Master的方式进行搭建演示,会了双Master,其他的将很简单。(多Master在实际中也是非常常用的,如果并发非常大,考虑多Master多Slave模式)

双Master模式架构

在192.168.99.121/122机器上各一个NameServer、Master进程。

以192.168.99.121为例:

第一步,修改/etc/hosts文件

hosts配置

确保相互之间可以ping通

第二步,解压并创建存储路径

tar -xvf alibaba-rocketmq-3.2.6.tar.gz

mkdir -p alibaba-rocketmq/store/{commitlog,consumequeue,index}

第三步,配置文件

broker-x.properties

配置项

上面已经将实际中常用的配置项给出来了!

第四步,修改日志配置文件

注意到logback.*.xml配置文件中:

需要替换${user.name}

可以使用sed进行替换:

sed -i 's#${user.home}#/software/alibaba-rocketmq#g' *.xml

第五步,修改启动脚本中的JVM参数

vim runbroker.sh/rumserver.sh

注意,在这里我将JVM的堆的初始化和最大大小统一设置为1G,并将新生代大小设置为512M。主要是考虑到我的虚拟机内存,实际上在线上是可以走默认的4G堆内存的。

第六步,启动NameServer

nohup sh mqnamesrv &

NameServer

nameserver启动日志

第七步,启动broker-X

启动broker

注意观察日志:

broker.log

进程与端口

第八步:RocketMQ Console

把rocketmq-console.war部署到Tomcat下即可。

解压WAR包

在解压WAR包后的CLASS下更改config.properties

好久不见,TOM猫

rocketmq管控台

这个管控台实际上还是比较简陋的,我们使用比较多的是mqadmin操作命令,后续会介绍。

OK,到这里,双Master的搭建已经完成了!


來源:http://www.jianshu.com/p/3afd610a8f7d
 

转载于:https://www.cnblogs.com/master-yao/p/7764576.html

RocketMQ实战(一)相关推荐

  1. RocketMQ实战--大数据平台技术栈06

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的RocketMQ! 作者丨张丰哲 www.jianshu.com/p/3afd610a8f7d 阿里巴巴有2大核心的分布式技术,一个是O ...

  2. RocketMQ 实战 集群监控平台搭建

    RocketMQ 实战 集群监控平台搭建 概述 RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫rocketmq-consol ...

  3. RocketMQ实战(四)

    前言 这将是RocketMQ实战系列的最后一篇文章,该系列的文章列表如下: <RocketMQ实战(一)> <RocketMQ实战(二)> <RocketMQ实战(三): ...

  4. RocketMQ实战与原理---安装、部署及简单应用

    RocketMQ实战与原理 第一章  安装.部署及简单应用 1. 安装 1.1 下载RocketMQ 2. 部署 2.1 部署nameserver 2.2 部署broker 2.3 新增Topic 3 ...

  5. 《RocketMQ实战专栏》为什么是你学习RocketMQ的最佳资料

    <RocketMQ实战与原理>专栏简介 简介 RocketMQ业界主流的消息中间件之一,承载公司核心业务消息的流转.对RocketMQ核心原理的理解与最佳实践成了开发与运维同学的必备技能. ...

  6. RocketMQ实战与原理解析

    网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...

  7. rocketmq 实战问题汇总

    rocketmq 实战过程会遇到这样或者那样的问题,今天我们专门抽出一篇文章来分析一下汇总一下,避免以后踩同样的坑: 1.找不到JDK的问题: 综合分析,是因为JDK安装的目录有空格导致的:Progr ...

  8. RocketMQ实战系列-RocketMQ命令详解

    导语   之前分析了关于RocketMQ源码的东西,接下来的阶段就是进入到实战的相关系列操作中,在这个系列中也会继续从源码的角度入手,深入的分析,在RocketMQ中的编程思想.下面就来介绍一下在Ro ...

  9. RocketMQ 实战 消息发送样例

    消息发送样例 导入MQ客户端依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId& ...

最新文章

  1. 程序开发中那些莫名奇妙的bug
  2. 衡阳技师学校计算机系,2017级计科师范专业到衡阳技师学院见习
  3. PAT甲级1054 The Dominant Color:[C++题解]哈希表、水题
  4. 二叉树的先序、中序、后续遍历【Java】
  5. 解决E: Package ‘libmysqlclient-dev‘ has no installation candidate报错
  6. nginx 配置支持URL HTML5 History 模式 与 设置代理
  7. Javascript你必须要知道的面试题
  8. 360浏览器不能打开CSDN登陆页面
  9. python打印日历_Python怎么打印日历?
  10. 【190302】VC+ 视频捕捉与录像+实例源码源代码
  11. archlinux什么桌面好_ArchLinux搭建高效便捷的平铺式桌面
  12. OSPF 协议中的一个普通区域通过ASBR 注入192.168.0.0/24~192.168.3.0/24 共4 条路由,在ABR 中配置聚合为一条聚合路由192.168.0.0/22,此时ABR 会
  13. APICloud使用记录——创建项目
  14. 企业官网小程序有什么作用
  15. OpenMP 教程(一) 深入剖析 OpenMP reduction 子句
  16. java自动旋转矫正图片方向
  17. Vue经典实例之table表格奇偶行不同颜色、鼠标移入变色、点击变色,一看就明白
  18. 嵌入式LinuxC--指针与数组
  19. Java 之 Excel文件下载
  20. Everything 详细安装教程

热门文章

  1. Android 4 学习(19):Services
  2. 多个页面同时跳转到一个页面,然后返回到上级页面
  3. 如何把Access转成SQL Server的方法介绍
  4. 用友财务软件主要数据表字段含义
  5. [转]numpy中的np.max 与 np.maximum区别
  6. [Web 前端] 解决因inline-block元素导致的空白间距和元素下沉
  7. shell中的条件判断和比较
  8. 烂泥:【解决】word复制windows live writer没有图片
  9. Java对数组的操作(二)——集合与数组的切换
  10. 《统一沟通-微软-实战》-3-部署-Exchange 2010-1-先决条件