设计师用的素材网站有哪些,做ppt素材的网站有哪些,怎样做网站外部链接,怎么做资源网站根据上一章《RocketMQ消费模型和部署模型》得知#xff0c;启动rocketmq非常简单#xff0c;只需要分别执行mqnamesrv启动NameServer#xff0c;执行mqbroker启动Broker即可。但生产环境不可能仅使用单节点MQ#xff0c;为提高可用性和吞吐量#xff0c;生产常使用集群模式… 根据上一章《RocketMQ消费模型和部署模型》得知启动rocketmq非常简单只需要分别执行mqnamesrv启动NameServer执行mqbroker启动Broker即可。但生产环境不可能仅使用单节点MQ为提高可用性和吞吐量生产常使用集群模式部署。本章节将详述Rocketmq集群模式部署方式。
1预期的集群架构 如上图通过三台MQ服务器配置成2主2从集群架构。服务器1只用来部署一个NameServer所以也可以配置成3主3从的架构。发布者和消费者可通过业务系统的集群部署增加吞吐量。 NameServer是无状态的且相互间无需沟通也就是说每个NameServer的等级和数据是相同的Broker可与任意NameServer连接。 Broker的主从分布在不同机器上保证了数据安全性当某个机器故障每个Broker至少有一个节点存储的有数据减少数据的丢失非100%数据安全未同步到从节点的数据仍会丢失
2部署步骤 2.1修改配置 修改NameServer配置 修改服务器1,2,3上的 runserver.sh根据机器内存修改JVM参数。如下图 默认是4G根据JDK版本当前机器使用JDK11虚拟机内存为2G故只分配256M 修改主从Broker配置 同样需要先修改runbroker.sh的JVM参数不再赘述可见上章节。 主从文件修改根据官方提供的sample修改。为保证环境干净复制2m-2s-async至my-2m-2s-async。修改服务器2上的broker-a.properties如下图 同理配置服务器3上的broker-a-s.properties如下图 broker-b.propertiesbroker-b-s.properties与broker-a.properties和broker-a-s.properties修改内容一致仅brokerName不一样。注意新增的几个日志文件位置需要主从路径分开本人因想当然放在一起困扰好几天无法正常启动服务。 2.2启动服务 机器2启动Broker-a和Broker-b-s机器3启动Broker-b和Broker-a-s 同理启动其他Broker启动后查看服务如下 至此Rocketmq的2m-2s的集群架构已搭建完成。
3RocketMQ集群架构问题 在集群架构下producer发送的消息都只发送给masterslave节点只是用来存储数据保证数据安全。若master所在机器故障Rocketmq并不会主动将slave升级为master对外提供服务。也就是说如果上述案例中机器2故障则机器2上的broker-a的master无法接收消息虽然机器3运行正常但机器3上的broker-a-s也无法接收消息。在机器2重新启动之前发送至Broker-a的消息都将发送失败。 为解决上述问题RocketMQ提供了dleger部署方式各broker间自动选举出leader和follwer正常情况下leader用于对外提供服务follwer用于备份数据。当leader发生故障通过Raft协议(多数同意机制)自动选举出新的leader对外提供服务。该部署模式在5.0版本变动较大后续直接详解5.0版本。