ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:319.79KB ,
资源ID:30592479      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30592479.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RocketMq消息队列实施方案完整版.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RocketMq消息队列实施方案完整版.docx

1、RocketMq消息队列实施方案完整版消息队列实施方案1、背景异步解耦合、给前端系统提供最高效的反应2、常见消息队列对比2、1 ActiveMqActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现优点:Java语言支持集群模式缺点:性能在消息中间件中处于下游2、2 RabbitmqRabbitmq是基于AMQP使用erlang语言实现的消息队列系统优点:1、完整的消息队列系统,支持多种消息队列模式,包括竞争消费;2、支持集群模式,扩展集群容量和性能比较方便,集成了集群的监控和管理;3、支持消息的持久化;缺点:1、需要学习比较复杂的接口和协议,比较耗

2、费时间;2、性能不是特别理想大概在1wqps左右;3、使用Erlang语言,语言基础;2、3 KafkaKafka 是LinkedIn 开发的一个高性能、分布式的消息发布订阅系统。优点:1、分布式集群可以透明的扩展,增加新的服务器进集群。2、高性能。单机写入TPS约在百万条/秒3、容错。数据都会复制到几台服务器上。缺点:1、复杂性。Kafka需要zookeeper 集群的支持,Topic通常需要人工来创建,部署和维护较一般消息队列成本更高定位于日志传输、存在消息丢失的肯能、消息乱序3、消息发送错误无重试2、4 RocketMQRockerMq 是阿里公司中间件团队参考Kafka思想,用Java

3、语言实现的消息传输系统优点:1、较高性能,单机写入TPS单实例约7万条/秒2、容错,多种集群模式、可以解决容错问题3、消息重试发送4、顺序消息可以严格执行缺点:1、消息重复、消费端需要做去重操作2、5 选用结论从项目业务与团队技术偏向考虑,我们应该需要一种数据安全性比较高,保证每个消息都会被执行;有容错机制、支持集群模式高可用;性能不错,可以在毫秒级处理消息;支持顺序消息的消息中间件, RockerMq 可以满足这些要求。3、RockerMq简介3、1 RockerMq 产品介绍参考阿里公司提供的RocketMQ 开发指南,最新版针对 v3.2.43、2 RockerMq集群3、2、1 部署方

4、式Rockermq共有四种部署方式,分别是:1、单个 Master一旦 Broker 重启或者宕机时,会导致整个服务不可用2、多 Master 模式一个集群无 Slave,全是 Master,例如 2 个 Master 戒者 3 个 Master优点:1、配置简单,2、容错,单个 Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由于 RAID10 磁盘非常可靠,在同步刷盘时消息不会丢,异步刷盘丢失少量消息, 3、性能最高。3、多 Master 多 Slave 模式,异步复制每个 Master 配置一个或多个Slave,有多对 Master-

5、Slave, HA(高可用集群)采用异步复制方式,主备有短暂消息延迟,毫秒级。优点:1、即使磁盘损坏,消息丢失的非常少,消息实时性不会被影响,因为 Master 宕机后,消费者仍然可以从 Slave 消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。缺点: 1、Master宕机,磁盘损坏时,因为主备有短暂消息延迟,未复制到slave的消息会丢失。2、目前master宕机后,备机不能自动切换为主机。只有master可以接收消息,若所有master宕机,将不能接收消息4、多 Master 多 Slave 模式,同步双写每个 Master 配置一个或多个Slave,有多对

6、 Master-Slave, HA 采用同步双写方式,主备都写成功,才返回成功。优点:数据与服务都无单点, Master 宕机情冴下,消费者可以从slave消费、消息无延迟,服务可用性与数据可用性都非常高缺点:1、性能比异步复制模式略低,収送单个消息的 RT(返回时间)会略高。2、目前master宕机后,备机不能自动切换为主机。只有master可以接收消息,若所有master宕机,将不能接收消息选用结论由于我们需要保证消息中间件的高可用性,消息不丢失、消息无延迟,所以我们选择“多Master多Slave模式,同步双写”模式。并且选择同步刷盘。3、2、2 多Master多Slave模式多mast

7、er多slave模式网络结构图主要组件有:Name Server、Broker、Producer、Consumer1、Name Server是一个几乎无状态节点,可集群部署,节点之间无信息同步、记录Topic 路由信息。2、Broker分为 Master和Slave,一个 Master 可以对应多个Slave,但是一个 Slave只能对应一个Master。3、Producer与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server获取Topic 路由信息,并向提供Topic服务的Master 建立长连接,定时向 Master 发送心跳。Producer

8、只可以向Master发送消息。Producer 完全无状态,可集群部署。4、Consumer与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server获取Topic路由信息,并与提供Topic服务的Master、 Slave建立长连接,并定时向Master、Slave収送心跳。Consumer既可以从 Master 订阅消息,也可以从 Slave 订阅消息,订阅规则由Broker配置决定3、3 集群搭建linux 环境下部署rocketMq多master多slave模式、同步双写模式集群,暂定为2个master,2个slave3、3、1 安装条件4台li

9、nux服务器、分为master-a、slave-a ; master-b、slave-b服务器防火墙开启9876,10911 lokkit -p 9876:tcp -p 10911:tcp服务器支持wget命令服务器安装jdk,不低于使用的rocketMq的支持版本3、3、2 安装步骤4台linux服务器、分为master-a、slave-a ; master-b、slave-b假设ip分别为:master-a =10.1.236.1slavea =10.1.236.2master-b =10.1.236.3slave-b =10.1.236.43、3、2、1 master-a1 从githu

10、b下载RocketMQ安装包或源码自编译安装wget 2 解压缩、并创建数据、日志目录 tar xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量:系统变量:Vi /etc/profile 或者修改当前用户的环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/bin source 命令是环境变量生效4 修改mq集群的master-a 配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.prope

11、rties不是强制必须使用这个文件,使用者可以自行定义# brokerClusterName=DefaultClusterbrokerName=broker-a #归属master-slave组的名字brokerId=0 #0表示为master-slave组中为 masternamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876 #nameservdefaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=

12、truelistenPort=10911 #Broker 对外服务的监听端口deleteWhen=04=120maped=1073741824maped=destroyMaped=120000redeleteHanged=120000diskMaxUsedSpaceRatio=88storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data #数据目录storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs #日志目录maxMessageSize=65536flushCommitLogLeastPa

13、ges=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SYNC_MASTER #角色同步双写MasterflushDiskType=SYNC_FLUSH #同步刷盘brokerIP1=10.1.236.1 #本机IP地址,多网卡

14、易出错,请手工指定其他配置请参考RocketMQ 开发指南,最新版针对 v3.2.45 启动mq集群的master-a跳转到RocketMQ的bin目录下cd $ROCKETMQ_HOME/binnohup sh mqnamesrv &nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &3、3、2、2 slave-a1从github下载RocketMQ安装包或源码自编译安装wget 2 解压缩、并创建数据、日志目录tar xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变

15、量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/bin source 命令是环境变量生效4修改mq集群的slave-a 配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件内的brokerName 正确即可# brokerClusterName=DefaultClusterbrokerName=broker-a #归属master-slave组

16、的名字brokerId=1 #1表示在master-slave组中为slavenamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #对外端口deleteWhen=04=120maped=1073741824maped=destroyMaped=120000redeleteHanged=120000disk

17、MaxUsedSpaceRatio=88storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data #数据存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs #日志存放maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushCo

18、nsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SLAVE #角色 SlaveflushDiskType=SYNC_FLUSH # 同步刷盘brokerIP1=10.1.236.2 #本机ip,多网卡,建议自定义其他配置请参考RocketMQ 开发指南,最新版针对 v3.2.45 启动mq集群的slave-a跳转到RocketMQ的bin目录下cd $ROCKETMQ_HO

19、ME/binnohup sh mqnamesrv &nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &3、3、2、3 master-b1 从github下载RocketMQ安装包或源码自编译安装wget 2 解压缩、并创建数据、日志目录 tar xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME

20、/bin source 命令是环境变量生效4 修改mq集群的master-b配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties不是强制必须使用这个文件,使用者可以自行定义# brokerClusterName=DefaultClusterbrokerName=broker-b #归属master-slave组的名字brokerId=0 #0表示为master-slave组中为 masternamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:98

21、76 #nameservdefaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #Broker 对外服务的监听端口deleteWhen=04=120maped=1073741824maped=destroyMaped=120000redeleteHanged=120000diskMaxUsedSpaceRatio=88storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data #数据目录storePathCom

22、mitLog=/opt/RocketMQ/alibaba-rocketmq/logs #日志目录maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRol

23、e=SYNC_MASTER #角色同步双写MasterflushDiskType=SYNC_FLUSH #同步刷盘brokerIP1=10.1.236.3 #本机IP地址,多网卡易出错,请手工指定其他配置请参考RocketMQ 开发指南,最新版针对 v3.2.45 启动mq集群的master-b跳转到RocketMQ的bin目录下cd $ROCKETMQ_HOME/binnohup sh mqnamesrv &nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &3、3、2、4 slave-b1从git

24、hub下载RocketMQ安装包或源码自编译安装wget 2 解压缩、并创建数据、日志目录tar xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/bin source 命令是环境变量生效4修改mq集群的slave-a 配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties不是强制必须使用这个文件,使用者可以自行定义、只要保证配置

25、文件内的brokerName 正确即可# brokerClusterName=DefaultClusterbrokerName=broker-b #归属master-slave组的名字brokerId=1 #1表示在master-slave组中为slavenamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911

26、 #对外端口deleteWhen=04=120maped=1073741824maped=destroyMaped=120000redeleteHanged=120000diskMaxUsedSpaceRatio=88storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data #数据存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs #日志存放maxMessageSize=65536flushComm

27、itLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SLAVE #角色 SlaveflushDiskType=SYNC_FLUSH # 同步刷盘brokerIP1=10.1.236.4 #本机ip,多网

28、卡,建议自定义其他配置请参考RocketMQ 开发指南,最新版针对 v3.2.45 启动mq集群的slave-b跳转到RocketMQ的bin目录下cd $ROCKETMQ_HOME/binnohup sh mqnamesrv &nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &4、MQ消息服务接口实现4.1、流程图4.2、消息中间件接口规范此服务接口以dubbo提供的restful协议对外提供发送消息服务,并通过backurl回调消费端把消息推送给消费者,使用此服务可以通过http post请求的方式,消费端要提供接受消息的http协议的post接口。1、中间件接口Rest路径:入参(json):“backurl”:” ”, /必填 消费端接收消息的接口地址 “data”: /必填 要发送的消息体xxx:xxx,xxx:xxx.出参(json):status:success,msg:发送成功 /成功 status:error,msg:发送失败原因 /失败2、消费端接口出参(String):”success”/消费成功 “error” /消费失败

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1