RocketMQ集群部署记录

#引用    https://cloud.tencent.com/developer/article/1147765

一、RocketMQ基础知识介绍 Apache RocketMQ是阿里开源的一款高性能、高吞吐量、队列模型的消息中间件的分布式消息中间件。RocketMQ具有以下特点:

上图是一个典型的消息中间件收发消息的模型,RocketMQ也是这样的设计,简单说来 RocketMQ具有以下特点: 1)是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 2)Producer、Consumer、队列都可以分布式。 3)Producer向一些队列轮流发送消息,队列集合称为Topic,Consumer如果做广播消费,则一个consumer实例消费这个Topic对应的所有队列,如果做集群消费,则多个Consumer实例平均消费这个topic对应的队列集合。 4)支持严格的消息顺序; 5)提供丰富的消息拉取模式 6)高效的订阅者水平扩展能力 7)实时的消息订阅机制 8)亿级消息堆积能力 9)较少的依赖 10)支持Topic与Queue两种模式; 11)同时支持Push与Pull方式消费消息;

消息队列的应用场景 1)异步处理 将不是必须的业务逻辑,进行异步处理,比如注册之后短信、邮箱的发送

2)应用解耦 订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。 库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。 假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。

3)流量削锋,也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。 应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。 a)可以控制活动的人数; b)可以缓解短时间内高流量压垮应用; c)用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面; d)秒杀业务根据消息队列中的请求信息,再做后续处理。

4)日志处理

5)消息通讯 消息通讯是指,消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等。

6)性能 RocketMQ单机也可以支持亿级的消息堆积能力。单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节

RocketMQ 物理部署结构

如上图所示, RocketMQ的部署结构有以下特点: 1)Name Server 可集群部署,节点之间无任何信息同步。 2)Broker(消息中转角色,负责存储消息,转发消息) 部署相对复杂,Broker 分为Master 与Slave,一个Master 可以对应多个Slave,但是一个Slave 只能对应一个Master,Master 与Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId来定 义,BrokerId为0 表示Master,非0 表示Slave。Master 也可以部署多个。每个Broker 与Name。 3)Producer 与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server 取Topic 路由信息,并向提供Topic 服务的Master 建立长连接,且定时向Master 发送心跳。Producer 完全无状态,可集群部署。 4)Consumer 与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server 取Topic 路由信息,并向提供Topic 服务的Master、Slave 建立长连接,且定时向Master、Slave 发送心跳。Consumer既可以从Master 订阅消息,也可以从Slave 订阅消息,订阅规则由Broker 配置决定。

Broker:消息中转角色,负责存储消息,转发消息 Broker集群有多种配置方式: 1)单Master 优点:除了配置简单没什么优点 缺点:不可靠,该机器重启或宕机,将导致整个服务不可用 2)多Master 优点:配置简单,性能最高 缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性 3)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级 优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预 缺点:Master宕机或磁盘损坏时会有少量消息丢失 4)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功 优点:服务可用性与数据可用性非常高 缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主

Master和Slave的配置文件参考conf目录下的配置文件 Master与Slave通过指定相同的brokerName参数来配对,Master的BrokerId必须是0,Slave的BrokerId必须是大于0的数。 一个Master下面可以挂载多个Slave,同一Master下的多个Slave通过指定不同的BrokerId来区分。

二、RocketMQ集群部署记录

部署需求: 准备5台虚拟机,其中4台作为rocektmq broker(双master 双slave,同步双写,异步刷盘),另1台用作rocektmq的console(rocketmq监控平台)和nameserver。 0)基础信息

ip地址                 主机名                   角色
192.168.10.202         mq-master01              broker-a 192.168.10.203 mq-master02 broker-b 192.168.10.205 mq-slave01 broker-a-s 192.168.10.206 mq-slave02 broker-b-s 192.168.10.207 mq-console-nameserver nameserver、console -------------------------------------------------------------------------- 其实也可以不用那么多机器,2台机器也可以,broker-a和broker-b-s在一台机器(也就是说broker-a的主节点与broker-b的从节点部署在一台服务器), broker-a-s和broker-b在一台机器。nameserver和console部署到2台中的任一台上。 -------------------------------------------------------------------------- 关闭5台机器的iptables和selinux(所有节点机器上都要操作) [root@mq-master01 ~]# /etc/init.d/iptables stop [root@mq-master01 ~]# vim /etc/sysconfig/selinux ...... SELINUX=disabled [root@mq-master01 ~]# setenforce 0 [root@mq-master01 ~]# getenforce Permissive 5台机器都要按照java环境 [root@mq-master01 ~]# java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) -------------------------------------------------------------------------- 5台机器一定要提前做hosts绑定,否则后续启动broker的时候,会报错诸如: java.net.UnknownHostException: mq-master01: mq-master01: Name or service not known [root@mq-master01 bin]# cat /etc/hosts ...... 192.168.10.202 mq-master01 192.168.10.203 mq-master02 192.168.10.205 mq-slave01 192.168.10.206 mq-slave02 192.168.10.207 mq-console-nameserver

1)rocektmq broker 双master双slave部署

1)安装rocketmq(四台broker节点机器操作一样)
下载地址:https://pan.baidu.com/s/16UAXHwzzy0DoGX4u93vK7A 提取密码:rjib [root@mq-master01 software]# pwd /data/software [root@mq-master01 software]# unzip rocketmq3.2.6.zip [root@mq-master01 software]# ln -s /data/software/alibaba-rocketmq3.2.6 /data/rocketmq 创建存储路径 [root@mq-master01 software]# mkdir -p /data/rocketmq/store [root@mq-master01 software]# mkdir -p /data/rocketmq/store/commitlog [root@mq-master01 software]# mkdir -p /data/rocketmq/store/consumequeue [root@mq-master01 software]# mkdir -p /data/rocketmq/store/index [root@mq-master01 software]# ls /data/rocketmq/ benchmark bin conf issues lib LICENSE.txt readme.txt store test wiki [root@mq-master01 software]# ls /data/rocketmq/store/ commitlog consumequeue index --------------------------------------------------------------------------------- 2)配置rocektmq broker (四个节点机器都要操作) mq-master01节点配置/data/rocketmq/conf/2m-2s-sync/broker-a.properties [root@mq-master01 ~]# vim /data/rocketmq/conf/2m-2s-sync/broker-a.properties #所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3) namesrvAddr=192.168.10.207:9876; #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/data/software/rocketmq/store #commitLog 存储路径 storePathCommitLog=/data/software/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/data/software/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/data/software/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/data/software/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/data/software/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=MASTER #要配置为MASTER或SLAVE的角色 #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable

转载于:https://www.cnblogs.com/fengjian2016/p/10083456.html

RocketMQ集群部署记录相关推荐

  1. Centos6下RocketMQ集群部署记录

    一.RocketMQ基础知识介绍 Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...

  2. RocketMQ集群部署方案(DLedger)

    RocketMQ集群部署方案(DLedger) 一.基本配置 1.准备三台虚拟机,root密码 root ;IP地址: 192.168.xxx.xxx worker1 192.168.xxx.xxx ...

  3. 从生产故障解锁RocketMQ集群部署的最佳实践

    1.故障描述 RocketMQ 集群采取的部署架构为2主2从,其部署架构如下图所示: 其部署架构中一个非常明显的特点是一台物理机上分别部署了 nameserver,broker 两个进程. 其中一台机 ...

  4. 从年末生产故障解锁RocketMQ集群部署的最佳实践

    [CSDN 编者按]因为一次生产事故,导致年终奖泡汤!在一番问题查找之后,终于找到了罪魁祸首!MQ集群中某一台物理机内存引发的故障,从而导致系统异常重启,而更关键的问题是,为什么一台Broker由于内 ...

  5. rocketmq 集群部署

    架构图 部署环境 hostname ip 备注 mqnamesrv1 10.0.0.1 namesrv mqnamesrv2 10.0.0.2 namesrv mqbroker3 10.0.0.3 b ...

  6. (三)RocketMQ集群部署实践

    2019独角兽企业重金招聘Python工程师标准>>> 全篇参照–<MyRocketMQ集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器) - tant ...

  7. CentOS7下Elasticsearch集群部署记录

    Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也 ...

  8. RocketMQ集群部署结构

    RocketMQ四大核心组成部分:NameServer.Broker.Producer以及Consumer四部分: 各组件通讯 Broker与Name Server集群中的所有节点建立长连接: Pro ...

  9. RocketMQ集群部署

    RocketMQ是一款非常优秀的消息中间件,运用的场景也是非常丰富,且在各大公司运用中也非常广泛.但是它是如何进行部署的呢,以及它的高可用是如何实现的呢.那么就由我来为大家讲解一哈RocketMQ是如 ...

最新文章

  1. python词频云图_python安娜卡列妮娜词云图制作
  2. html怎么循环输出_for 循环疑难点
  3. android 相机 全功能,一加7系首个Android 11公测代码暗示了相机应用的诸多功能更新...
  4. 【Hibernate】Hibernate实体关系映射——主键相同的一对一关系
  5. AMD EPYC——CPU命名规则
  6. python 基本数据类型常用方法总结
  7. Python键鼠操作自动化库PyAutoGUI简介
  8. 信安教程第二版-第20章数据库系统安全
  9. java项目中用了Disruptor之后,性能提升了10倍
  10. ajax无刷新提交表,Ajax无刷新提交表单和显示
  11. 人脸对齐(四)--CLM算法及概率图模型改进
  12. 创建一棵二叉树(C++)以及遍历
  13. PKUWC2018 5/6
  14. speedoffice(Excel)表格如何添加边框?
  15. C#窗体应用显示用户sa登录失败
  16. 交互与前端13 Tabulator 表格实践
  17. 马悦凌:从初级护士到“民间奇医”[6]
  18. Android Studio Chipmunk Patch 2(android-studio-2021.2.1.16)下载地址
  19. Android开发——Android手机屏幕适配方案总结
  20. 小学生用计算机的方法,多种教学方法在小学信息技术教学中的使用

热门文章

  1. (一)H264视频解码问题:出现部分绿屏问题的解决
  2. 二维码支付原理分析及安全性的探究
  3. 解决电脑剪切板无法运行问题 解决电脑不可以复制粘贴问题
  4. 基于Python的身份证校验及数据提取
  5. vue仿今日头条_vue 仿今日头条
  6. 神武服务器维护内容,3月10日神武2维护解读:130装备灵可获得
  7. [附源码]计算机毕业设计Python+uniapp一款基于安卓的小叮当音乐软件dpk40(程序+lw+APP+远程部署)
  8. 每天一个python段子(3):一句话创建倒排索引
  9. 苹果官宣iPod停产,iPod之父:没有它就没有iPhone
  10. win10设置过的锁屏壁纸桌面壁纸