版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、消息队列实施方案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 是阿里公司中间件团队参考
3、Kafka思想,用 Java 语言实现的消息传输系统优点:1、较高性能,单机写入 TPS 单实例约 7 万条 /秒2、容错,多种集群模式、可以解决容错问题3、消息重试发送4、顺序消息可以严格执行 缺点:1、消息重复、消费端需要做去重操作2、 5 选用结论从项目业务与团队技术偏向考虑,我们应该需要一种数据安全性比较高, 保证每个消息都会被执行;有容错机制、支持集群模式高可用;性能不错,可以在毫秒级处理消息;支持顺序消息的消息中间件,RockerMq可以满足这些要求。3、RockerMq 简介3、 1 RockerMq 产品介绍参考阿里公司提供的 RocketMQ 开发指南,最新版针对 v3.2.
4、43、2 RockerMq 集群3、2、 1 部署方式Rockermq 共有四种部署方式,分别是:1 、单个 Master一旦 Broker 重启或者宕机时,会导致整个服务不可用2 、多 Master 模式一个集群无 Slave ,全是 Master ,例如 2 个 Master 戒者 3 个 Master 优点:1、配置简单,2、容错, 单个 Master 宕机或重启维护对应用无影响, 在磁盘配置为 RAID10 时,即使机 器宕机不可恢复情况下,由于 RAID10 磁盘非常可靠,在同步刷盘时消息不会丢,异步刷 盘丢失少量消息,3、性能最高。3 、多 Master 多 Slave 模式,异步
5、复制每个 Master 配置一个或多个 Slave ,有多对 Master-Slave , HA(高可用集群) 采用异步 复制方式,主备有短暂消息延迟,毫秒级。优点:1、即使磁盘损坏,消息丢失的非常少,消息实时性不会被影响,因为 Master 宕机后,消 费者仍然可以从 Slave 消费,此过程对应用透明。不需要人工干预。性能同多 Master 模 式几乎一样。缺点:1、 Master 宕机,磁盘损坏时,因为主备有短暂消息延迟,未复制到 slave 的消息会丢失。2、目前 master 宕机后,备机不能自动切换为主机。只有 master 可以接收消息,若所有 master 宕机,将不能接收消息
6、4 、多 Master 多 Slave 模式,同步双写每个 Master 配置一个或多个 Slave ,有多对 Master-Slave , HA 采用同步双写方式,主 备都写成功,才返回成功。优点:数据与服务都无单点, Master 宕机情冴下,消费者可以从 slave 消费、消息无延迟,服务可用性与数据可用性都非常高缺点:1、性能比异步复制模式略低,収送单个消息的RT (返回时间)会略高。2、目前 master 宕机后,备机不能自动切换为主机。只有 master 可以接收消息,若所有 master 宕机,将不能接收消息选用结论由于我们需要保证消息中间件的高可用性,消息不丢失、消息无延迟,所
7、以我们选择“多Master 多 Slave 模式,同步双写”模式。并且选择同步刷盘。3、2、2 多 Master多 Slave模式多 master 多 slave 模式网络结构图主要组件有:Name Server 、 Broker 、 Producer 、Consumer1、 Name Server 是一个几乎无状态节点,可集群部署,节点之间无信息同步、记录 Topic 路由信息。2、 Broker 分为 Master 和 Slave ,一个 Master 可以对应多个 Slave ,但是一个 Slave 只 能对应一个 Master 。3、Producer 与 Name Server 集群中
8、的其中一个节点 (随机选择) 建立长连接, 定期从 Name Server 获取 Topic 路由信息,并向提供 Topic 服务的 Master 建立长连接,定时向 Master 发送心跳。 Producer 只可以向 Master 发送消息。 Producer 完全无状态,可集群部署。4、Consumer 与 Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从 Name Server 获取 Topic 路由信息,并与提供 Topic 服务的 Master 、 Slave 建立长连接, 并定时向 Master 、Slave 収送心跳。 Consumer 既可以从 Ma
9、ster 订阅消息, 也可以从 Slave 订阅消息,订阅规则由 Broker 配置决定3、 3 集群搭建linux 环境下部署 rocketMq 多 master 多 slave 模式、同步双写模式集群, 暂定为 2 个 master , 2 个 slave3、3、 1 安装条件4 台 linux 服务器、分为 master-a 、 slave-a ; master-b 、 slave-b 服务器防火墙开启 9876 ,10911lokkit -p 9876:tcp -p 10911:tcp服务器支持 wget 命令服务器安装 jdk ,不低于使用的 rocketMq 的支持版本3、3、 2
10、 安装步骤4 台 linux 服务器、分为 master-a 、 slave-a ; master-b 、 slave-b 假设 ip 分别为:master-a =slave a =master-b =slave-b =3、 3、2、1 master-a1 从 github 下载 RocketMQ 安装包或源码自编译安装wget https:/github./alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz2 解压缩、并创
11、建数据、日志目录tar xvfa libaba-rocketmq-3.2.2.tar.gz3 配置环境变量 :系统变量:Vi /etc/profile或者修改当前用户的环境变量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmq export PATH=$PATH:$ROCKETMQ_HOME/bin source 命令是环境变量生效4 修改 mq 集群的 master-a 配置修改文件 $ROCKETMQ HOME/conf/2m-2s-sync/perties不是强制必须使用这个文件,使用者可以自行定义# b
12、rokerClusterName=DefaultClusterbrokerName=broker-a # 归属 master-slave 组的名字 brokerId=0 #0 表示为 master-slave 组中为 master namesrvAddr=:9876;:9876;:9876;:9876 #nameserv defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=true listenPort=10911
13、 #Broker 对外服务的监听端口 deleteWhen=04fileReservedTime=120 mapedFileSizeCommitLog=1073741824 mapedFileSizeConsumeQueue=50000000 destroyMapedFileIntervalForcibly=120000 redeleteHangedFileInterval=120000 diskMaxUsedSpaceRatio=88 storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data# 数据目录storePathCommitLog=/o
14、pt/RocketMQ/alibaba-rocketmq/logs # 日志目录 maxMessageSize=65536 flushCommitLogLeastPages=4 flushConsumeQueueLeastPages=2 flushCommitLogThoroughInterval=10000 flushConsumeQueueThoroughInterval=60000 checkTransactionMessageEnable=false sendMessageThreadPoolNums=128 pullMessageThreadPoolNums=128brokerRol
15、e=SYNC_MASTER #角色同步双写 Master flushDiskType=SYNC_FLUSH #同步刷盘brokerIP1= #本机 IP 地址,多网卡易出错,请手工指定 其他配置请参考 RocketMQ 开发指南 ,最新版针对 v3.2.45 启动 mq 集群的 master-a 跳转到 RocketMQ 的 bin 目录下 cd $ROCKETMQ_HOME/bin nohup sh mqnamesrv &nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/perties &3、
16、3、2、2 slave-a1 从 github 下载 RocketMQ 安装包或源码自编译安装wget https:/github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解压缩、并创建数据、日志目录tar xvfa libaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是
17、环境变量生效4 修改 mq 集群的 slave-a 配置修改文件 $ROCKETMQ_HOME/conf/2m-2s-sync/perties 不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件的 brokerName 确即可# brokerClusterName=DefaultCluster brokerName=broker-a # 归属 master-slave 组的名字 brokerId=1 #1 表示在 master-slave 组中为 slave namesrvAddr=:9876;:9876;10.1
18、.236.3:9876;:9876 defaultTopicQueueNums=4 autoCreateTopicEnable=true autoCreateSubscriptionGroup=true listenPort=10911 #对外端口 deleteWhen=04 fileReservedTime=120 mapedFileSizeCommitLog=1073741824 mapedFileSizeConsumeQueue=50000000 destroyMapedFileIntervalForcibly=120000 redeleteHangedFileInt
19、erval=120000 diskMaxUsedSpaceRatio=88 storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data#数据存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs # 日志存放 maxMessageSize=65536 flushCommitLogLeastPages=4 flushConsumeQueueLeastPages=2 flushCommitLogThoroug
20、hInterval=10000 flushConsumeQueueThoroughInterval=60000 checkTransactionMessageEnable=false sendMessageThreadPoolNums=128 pullMessageThreadPoolNums=128 brokerRole=SLAVE #角色 Slave flushDiskType=SYNC_FLUSH # 同步刷盘brokerIP1= #本机 ip,多网卡,建议自定义其他配置请参考 RocketMQ 开发指南 ,最新版针对 v3.2.45 启动 mq 集群的 slave-
21、a 跳转到 RocketMQ的 bin 目录下 cd $ROCKETMQ_HOME/bin nohup sh mqnamesrv & nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/perties &3、 3、2、3 master-b1 从 github 下载 RocketMQ 安装包或源码自编译安装wget https:/github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解压缩、并创建数据、日志目录
22、tar xvfa libaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是环境变量生效4 修改 mq 集群的 master-b 配置修改文件 $ROCKETMQ HOME/conf/2m-2s-sync/perties不是强制必须使用这个文件,使用者可以自行定义# brokerClusterName=DefaultClusterbrokerName=bro
23、ker-b # 归属 master-slave 组的名字 brokerId=0 #0 表示为 master-slave 组中为 master namesrvAddr=:9876;:9876;:9876;:9876 #nameserv defaultTopicQueueNums=4autoCreateTopicEnable=true autoCreateSubscriptionGroup=true listenPort=10911 #Broker 对外服务的监听端口 deleteWhen=04fileReserved
24、Time=120 mapedFileSizeCommitLog=1073741824 mapedFileSizeConsumeQueue=50000000 destroyMapedFileIntervalForcibly=120000 redeleteHangedFileInterval=120000 diskMaxUsedSpaceRatio=88 storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data# 数据目录storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs # 日志目录 max
25、MessageSize=65536flushCommitLogLeastPages=4 flushConsumeQueueLeastPages=2 flushCommitLogThoroughInterval=10000 flushConsumeQueueThoroughInterval=60000 checkTransactionMessageEnable=false sendMessageThreadPoolNums=128 pullMessageThreadPoolNums=128brokerRole=SYNC_MASTER #角色同步双写 MasterflushDiskType=SYN
26、C_FLUSH #同步刷盘brokerIP1= #本机 IP 地址,多网卡易出错,请手工指定其他配置请参考 RocketMQ 开发指南 ,最新版针对 v3.2.45 启动 mq 集群的 master-b 跳转到 RocketMQ的 bin 目录下 cd $ROCKETMQ_HOME/bin nohup sh mqnamesrv & nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/perties &3、 3、2、4 slave-b1 从 github 下载 RocketMQ 安装包或源码自编译安装
27、wget https:/github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解压缩、并创建数据、日志目录tar xvfa libaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是环境变量生效4 修改 mq 集群的 slave-a 配置修改文件 $ROCKETMQ_HOME
28、/conf/2m-2s-sync/perties 不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件的 brokerName 确即可# brokerClusterName=DefaultClusterbrokerName=broker-b # 归属 master-slave 组的名字 brokerId=1 #1 表示在 master-slave 组中为 slave namesrvAddr=:9876;:9876;:9876;:9876 defaultTopicQueueNum
29、s=4autoCreateTopicEnable=true autoCreateSubscriptionGroup=true listenPort=10911 #对外端口 deleteWhen=04fileReservedTime=120 mapedFileSizeCommitLog=1073741824 mapedFileSizeConsumeQueue=50000000 destroyMapedFileIntervalForcibly=120000 redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88 storePathRoot
30、Dir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data#数据存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs # 日志存放 maxMessageSize=65536flushCommitLogLeastPages=4 flushConsumeQueueLeastPages=2 flushCommitLogThoroughInterval=10000 flushConsumeQueueThoroughInterval=60000 checkTransactionMessageEnable=false sendMessageThreadPoolNums=128 pullMessageThreadPoolNums=128 brokerRole=SLAVE #角色 Slave flushDiskType=SYNC_FLUSH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 2 Let's talk teens Reading 说课稿-2024-2025学年高中英语牛津译林版(2020)必修第一册
- Unit 6 Section B 1a-2b说课稿 2024-2025学年人教版(2024)七年级英语上册
- 数控模具知识培训课件
- 江苏省苏州市新区2024-2025学年八年级上学期期末质量监测历史卷(含答案)
- 贵州师范大学《VB语》2023-2024学年第一学期期末试卷
- 贵州黔南科技学院《提案制作与谈判技巧》2023-2024学年第一学期期末试卷
- DB21-T 4078.4-2024 外来入侵植物监测技术规程 第4部分:刺苍耳
- Unit 4 What can you do(说课稿)-2023-2024学年人教PEP版英语五年级上册
- 2024版噪声污染控制工程协议协议版B版
- 贵州工贸职业学院《湖南传统民居》2023-2024学年第一学期期末试卷
- 《孙子兵法》与执政艺术学习通超星期末考试答案章节答案2024年
- 九宫数独200题(附答案全)
- 皮尔逊Ⅲ型曲线模比系数计算(共享版).xls
- 腹膜透析并发腹膜炎临床路径
- (完整版)市政工程施工工期定额(定稿).docx
- 商业发票INVOICE模板
- 超声波焊接作业指导书(共8页)
- 《你的生命有什么可能》PPT
- 双梁桥式起重机设计
- 电机与电气控制技术PPT课件
- 废弃钻井泥浆和压裂返排液无害化处理研究报告
评论
0/150
提交评论