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

上传人:b****3 文档编号:1460525 上传时间:2022-10-22 格式:DOCX 页数:15 大小:366.73KB
下载 相关 举报
RocketMq消息队列实施方案完整版.docx_第1页
第1页 / 共15页
RocketMq消息队列实施方案完整版.docx_第2页
第2页 / 共15页
RocketMq消息队列实施方案完整版.docx_第3页
第3页 / 共15页
RocketMq消息队列实施方案完整版.docx_第4页
第4页 / 共15页
RocketMq消息队列实施方案完整版.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

《RocketMq消息队列实施方案完整版.docx》由会员分享,可在线阅读,更多相关《RocketMq消息队列实施方案完整版.docx(15页珍藏版)》请在冰豆网上搜索。

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

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

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

消息队列实施方案

1、背景

异步解耦合、给前端系统提供最高效的反应

2、常见消息队列对比

2、1ActiveMq

ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMSProvider实现

优点:

Java语言

支持集群模式

缺点:

性能在消息中间件中处于下游

2、2Rabbitmq

Rabbitmq是基于AMQP使用erlang语言实现的消息队列系统

优点:

1、完整的消息队列系统,支持多种消息队列模式,包括竞争消费;

2、支持集群模式,扩展集群容量和性能比较方便,集成了集群的监控和管理;

3、支持消息的持久化;

缺点:

1、需要学习比较复杂的接口和协议,比较耗费时间;

2、性能不是特别理想大概在1wqps左右;

3、使用Erlang语言,语言基础;

2、3Kafka

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可以满足这些要求。

 

都写成功,才返回成功。

优点:

数据与服务都无单点,Master宕机情冴下,消费者可以从slave消费、消息无延迟,服务可用性与数据可用性都非常高

缺点:

1、性能比异步复制模式略低,収送单个消息的RT(返回时间)会略高。

2、目前master宕机后,备机不能自动切换为主机。

只有master可以接收消息,若所有master宕机,将不能接收消息

选用结论

由于我们需要保证消息中间件的高可用性,消息不丢失、消息无延迟,所以我们选择“多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安装步骤

4台linux服务器、分为master-a、slave-a;master-b、slave-b

假设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安装包或源码自编译安装

wget

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:

9876;10.1.236.3:

9876;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安装包或源码自编译安装

wget

2解压缩、并创建数据、日志目录

tar–xvfalibaba-rocketmq-3.2.2.tar.gz

3配置环境变量

例如:

exportROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmq

exportPATH=${PATH}:

${ROCKETMQ_HOME}/bin

source命令是环境变量生效

4修改mq集群的slave-a配置

修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties

不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件内的brokerName正确即可

#brokerClusterName=DefaultCluster

brokerName=broker-a#归属master-slave组的名字

brokerId=1#1表示在master-slave组中为slave

namesrvAddr=10.1.236.1:

9876;10.1.236.2:

9876;10.1.236.3:

9876;10.1.236.4:

9876

defaultTopicQueueNums=4

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

listenPort=10911#对外端口

deleteWhen=04

fileReservedTime=120

mapedFileSizeCommitLog=1073741824

mapedFileSizeConsumeQueue=50000000

destroyMapedFileIntervalForcibly=120000

redeleteHangedFileInterval=120000

diskMaxUsedSpaceRatio=88

storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data#数据存放

storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs#日志存放

m

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

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

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