回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的RocketMQ!

作者丨张丰哲

www.jianshu.com/p/3afd610a8f7d

阿里巴巴有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通

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

第三步,配置文件

broker-x.properties

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

配置项

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

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

需要替换${user.name}

可以使用sed进行替换:

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

vim runbroker.sh/rumserver.sh

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

第六步,启动NameServer

NameServer

nameserver启动日志

第七步,启动broker-X

启动broker

注意观察日志:

broker.log

进程与端口

第八步:RocketMQ Console

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

解压WAR包

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

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

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

长按订阅更多精彩▼

RocketMQ实战--大数据平台技术栈06相关推荐

  1. 谈谈对 Canal( 增量数据订阅与消费 )的理解--大数据平台技术栈系列(3)

    之前说了,大数据平台技术栈 (可点击查看),今天就来说说其中的Cannal 来源:朱小厮, blog.csdn.net/u013256816/article/details/52475190 概述 c ...

  2. K8S 从懵圈到熟练--大数据平台技术栈18

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的K8S! 来自:阿里技术公众号 阿里妹导读:排查完全陌生的问题.不熟悉的系统组件,对许多工程师来说是无与伦比的工作乐趣,当然也是一大挑战 ...

  3. TiDB 在大型互联网的深度实践及应用--大数据平台技术栈08

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的TiDB! 作者介绍 吕磊,摩拜单车高级 DBA 一.业务场景 摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务 ...

  4. 一图读懂HDFS--大数据平台技术栈06

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的HDFS! 来自:hadoop 为什么我们需要HDFS 文件系统由三部分组成:与文件管理有关软件.被管理文件以及实施文件管理所需数据结构 ...

  5. 图解TensorFlow--大数据平台技术栈16

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的TensorFlow! 来源:知乎,作者:何之源 在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块 ...

  6. 图解YARN--大数据平台技术栈17

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的YARN! 为什么会产生YRAN?这个与MapReduce1.x的架构有关,正是因为MapReduce1.x存在许多的问题,才会产生 Y ...

  7. 图解Hbase--大数据平台技术栈07

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的HBase! HBase简介 HBase是一个分布式的.面向列的开源数据库存储系统,是对Google论文BigTable的实现,具有高可 ...

  8. 大数据工程师技术栈探讨

    1.前言 随着国务院印发十四五规划关于数字经济规划和数字信息化建设的推进(如下图1所示).大量的数字化的产品将产生海量的数据,因此近些年大数据技术越来越被大家重视起来. 图1  国务院十四五数字经济规 ...

  9. 大数据平台技术可以提供哪些服务

    随着大数据.互联网和物联网的深度渗入,智慧城市已经成为城市现代化发展的首要任务和目标,即将大数据等数字技术融入城市生活和管理的各个方面,使城市的各项数据均能得到整合利用.那么大数据平台技术能够提供哪些 ...

最新文章

  1. 大促下的智能运维挑战:阿里如何抗住“双11猫晚”?
  2. linux c 命令行解析 getopt getopt_long optarg optind opterr optopt 简介
  3. WH-G405tf连接公网服务器进行透传
  4. Android面试题Service,Android面试题-IntentService源码分析
  5. Linux内核分析 02
  6. django 1.8 官方文档翻译: 13-1-1 Django 中的用户认证
  7. 下载Android kernel
  8. C#批量发送短信操作
  9. 关于win10自动更新无法关闭
  10. python线程执行完后释放内存_线程结束后释放内存
  11. 从安卓手机ROOT提取微信聊天记录到利用Python进行词云分析全过程
  12. OOALV进阶版:实现一个屏幕下展示多个ALV,跳转网页
  13. 树莓派3 搭建tensorflow并进行物体识别
  14. 什么是码元?什么是比特?
  15. 三星 android 备忘录,便捷工具组件:三星Note S备忘录迎升级
  16. 如何进入训练模式_健身计划非常重要,对于健身小白,新手期和成长期该如何制定?...
  17. 美团的至暗时刻:用户口碑崩塌,食品安全五连击,股价腰斩!
  18. c# IPAddress类
  19. MAMP PRO for Mac 使用说明
  20. IDEA 快速放缩代码字体设置(包括汉化版)

热门文章

  1. 2020ICPC·小米 网络选拔赛第一场(D. Router Mesh)
  2. 图论500 ---- HDU3631 Shortest Path Floyed 插点法 真正了解Floyed
  3. 投影串口测试程序_【原创】串口通信测试程序
  4. 【数据结构】平衡树 - treap
  5. Codeforces Round #621题解
  6. pyqtdeploy教程_PyQtdeploy-V2.4 User Guide 中文 (一)
  7. php json 数组 区别,PHP实战:JSON两种结构之对象和数组的理解
  8. js--webSocket入门
  9. linux 下 jenkins 安装注意事项
  10. Maven学习-项目对象模型