RocketMq消息队列实施计划方案完整版Word格式文档下载.docx
- 文档编号:20558852
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:14
- 大小:229.80KB
RocketMq消息队列实施计划方案完整版Word格式文档下载.docx
《RocketMq消息队列实施计划方案完整版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《RocketMq消息队列实施计划方案完整版Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
Kafka是LinkedIn开发的一个高性能、分布式的消息发布订阅系统。
1、分布式集群可以透明的扩展,增加新的服务器进集群。
2、高性能。
单机写入TPS约在百万条/秒
3、容错。
数据都会复制到几台服务器上。
1、复杂性。
Kafka需要zookeeper集群的支持,Topic通常需要人工来创建,部署和维护较一般消息队列成本更高
定位于日志传输、存在消息丢失的肯能、消息乱序
3、消息发送错误无重试
2、4RocketMQ
RockerMq是阿里公司中间件团队参考Kafka思想,用Java语言实现的消息传输系统
1、较高性能,单机写入TPS单实例约7万条/秒
2、容错,多种集群模式、可以解决容错问题
3、消息重试发送
4、顺序消息可以严格执行
1、消息重复、消费端需要做去重操作
2、5选用结论
从项目业务与团队技术偏向考虑,我们应该需要一种数据安全性比较高,保证每个消息都会被执行;
有容错机制、支持集群模式高可用;
性能不错,可以在毫秒级处理消息;
支持顺序消息的消息中间件,RockerMq可以满足这些要求。
3、RockerMq简介
3、1RockerMq产品介绍
参考阿里公司提供的《RocketMQ开发指南》,最新版针对v3.2.4
3、2RockerMq集群
3、2、1部署方式
Rockermq共有四种部署方式,分别是:
1、单个Master
一旦Broker重启或者宕机时,会导致整个服务不可用
2、多Master模式
一个集群无Slave,全是Master,例如2个Master戒者3个Master
1、配置简单,
2、容错,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,在同步刷盘时消息不会丢,异步刷盘丢失少量消息,
3、性能最高。
3、多Master多Slave模式,异步复制
每个Master配置一个或多个Slave,有多对Master-Slave,HA(高可用集群)采用异步复制方式,主备有短暂消息延迟,毫秒级。
1、即使磁盘损坏,消息丢失的非常少,消息实时性不会被影响,因为Master宕机后,消费者仍然可以从Slave消费,此过程对应用透明。
不需要人工干预。
性能同多Master模式几乎一样。
1、Master宕机,磁盘损坏时,因为主备有短暂消息延迟,未复制到slave的消息会丢失。
2、目前master宕机后,备机不能自动切换为主机。
只有master可以接收消息,若所有master宕机,将不能接收消息
4、多Master多Slave模式,同步双写
每个Master配置一个或多个Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,才返回成功。
数据与服务都无单点,Master宕机情冴下,消费者可以从slave消费、消息无延迟,服务可用性与数据可用性都非常高
1、性能比异步复制模式略低,収送单个消息的RT(返回时间)会略高。
选用结论
由于我们需要保证消息中间件的高可用性,消息不丢失、消息无延迟,所以我们选择“多Master多Slave模式,同步双写”模式。
并且选择同步刷盘。
3、2、2多Master多Slave模式
多master多slave模式网络结构图
主要组件有:
NameServer、Broker、Producer、Consumer
1、NameServer是一个几乎无状态节点,可集群部署,节点之间无信息同步、记录Topic路由信息。
2、Broker分为Master和Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。
3、Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer获取Topic路由信息,并向提供Topic服务的Master建立长连接,定时向Master发送心跳。
Producer只可以向Master发送消息。
Producer完全无状态,可集群部署。
4、Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer获取Topic路由信息,并与提供Topic服务的Master、Slave建立长连接,并定时向Master、Slave収送心跳。
Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定
3、3集群搭建
linux环境下部署rocketMq多master多slave模式、同步双写模式集群,
暂定为2个master,2个slave
3、3、1安装条件
4台linux服务器、分为master-a、slave-a;
master-b、slave-b
服务器防火墙开启9876,10911
lokkit-p9876:
tcp-p10911:
tcp
服务器支持wget命令
服务器安装jdk,不低于使用的rocketMq的支持版本
3、3、2安装步骤
假设ip分别为:
master-a=10.1.236.1
slave–a=10.1.236.2
master-b=10.1.236.3
slave-b=10.1.236.4
3、3、2、1master-a
1从github下载RocketMQ安装包或源码自编译安装
wgethttps:
//github./alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz
2解压缩、并创建数据、日志目录
tar–xvfalibaba-rocketmq-3.2.2.tar.gz
3配置环境变量:
系统变量:
Vi/etc/profile
或者修改当前用户的环境变量
例如:
exportROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmq
exportPATH=${PATH}:
${ROCKETMQ_HOME}/bin
source命令是环境变量生效
4修改mq集群的master-a配置
修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties
不是强制必须使用这个文件,使用者可以自行定义
#brokerClusterName=DefaultCluster
brokerName=broker-a#归属master-slave组的名字
brokerId=0#0表示为master-slave组中为master
namesrvAddr=10.1.236.1:
9876;
10.1.236.2:
10.1.236.3:
10.1.236.4:
9876#nameserv
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911#Broker对外服务的监听端口
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data#数据目录
storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs#日志目录
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
brokerRole=SYNC_MASTER#角色同步双写Master
flushDiskType=SYNC_FLUSH#同步刷盘
brokerIP1=10.1.236.1#本机IP地址,多网卡易出错,请手工指定
其他配置请参考《RocketMQ开发指南》,最新版针对v3.2.4
5启动mq集群的master-a
跳转到RocketMQ的bin目录下
>
cd$ROCKETMQ_HOME/bin
nohupshmqnamesrv&
nohupshmqbroker-c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties&
3、3、2、2slave-a
1从github下载RocketMQ安装包或源码自编译安装
//github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz
tar–xvfalibaba-rocketmq-3.2.2.tar.gz
3配置环境变量
${ROCKETMQ_HOME}/bin
4修改mq集群的slave-a配置
修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties
不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件的brokerName正确即可
brokerId=1#1表示在master-slave组中为slave
9876
listenPort=10911#对外端口
storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data#数据存放
storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs#日志存放
brokerRole=SLAVE#角色Slave
flushDiskType=SYNC_FLUSH#同步刷盘
brokerIP1=10.1.236.2#本机ip,多网卡,建议自定义
5启动mq集群的slave-a
nohupshmqbroker-c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties&
3、3、2、3master-b
4修改mq集群的master-b配置
修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties
brokerName=broker-b#归属master-slave组的名字
brokerIP1=10.1.236.3#本机IP地址,多网卡易出错,请手工指定
5启动mq集群的master-b
nohupshmqbroker-c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties&
3、3、2、4slave-b
修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties
brokerIP1=10.1.236.4#本机ip,多网卡,建议自定义
5启动mq集群的slave-b
nohupshmqbroker-c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties&
4、MQ消息服务接口实现
4.1、流程图
4.2、消息中间件接口规
此服务接口以dubbo提供的restful协议对外提供发送消息服务,并通过backurl回调消费端把消息推送给消费者,使用此服务可以通过httppost请求的方式,消费端要提供接受消息的http协议的post接口。
1、中间件接口
Rest路径:
http:
//xx.xx.xx.xx:
xxxx/mq/send/sendMQ
入参(json):
{“backurl”:
”http:
xxxx/xx”,//必填消费端接收消息的接口地址
“data”:
{//必填要发送的消息体
xxx:
xxx,
xxx
……….
}
出参(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RocketMq 消息 队列 实施 计划 方案 完整版