关于RocketMQ Topic的创建机制,我还有一些细节上的思考

简介: 在撸完RocketMQ Topic的创建机制后,我似乎还有一些意犹未尽的感觉,总觉得还缺一些什么。于是我就趁热打铁,提出以下两点我自己的一些思考。当集群新增master节点后,如何保证队列负载?如何在集群中固定队列数量?

在撸完RocketMQ Topic的创建机制后,我似乎还有一些意犹未尽的感觉,总觉得还缺一些什么。于是我就趁热打铁,提出以下两点我自己的一些思考。


当集群新增master节点后,如何保证队列负载?



假设我现在有两个master broker分别为b1和b2组成了一个集群,我选择手动创建topic1,此时topic1的路由信息会发送到b1和b2,同时b1和b2会将路由信息注册到nameserver,发送topic1的消息时,会从nameserver获取topic1的路由信息,然后进行负载均衡平均分发到b1和b2。


以上是前提。


如果此时topic1的消息量剧增,b1和b2负载过高,集群这时加了b3和b4两个master broker节点,但此时b3和b4并没有topic1的路由信息,也就是topic1此时从nameserver获取到的broker信息只有b1和b2,因此虽然加了b3和b4,但topic1的消息并不会路由到b3和b4去,这时只有新加入的topic才会有机会路由到b3和b4那里。


你们有没有想过是如何处理这个问题呢?或者根本不去处理?


通过撸源码可以知道,RocketMQ目前只能是通过手动配置topic1到b3和b4,那么这时问题又来了,如果集群中有成百上千个topic呢?手动配置真的够呛,流量突然增大这时你手动扩容topic时效性也差。那如何来解决这个问题呢?


我们可以按业务分集群,把topic归类到不同的集群中,这样每个集群添加broker后,需要重新分配的topic就大大减少了。


更好的解决方案是添加一个复制功能,新增的broker自动从nameserver拉取需要复制到新broker的topic配置。期待以后的版本迭代中如愿增加这个功能吧


如何在集群中固定队列数量?



假设集群有20个master broker,有个topic1,这个topic1需要在集群中保持拥有10个消息队列。


以上是前提。


我们都知道手动创建topic有broker模式创建和集群模式创建,我们可以很简单地通过broker模式来创建topic1拥有10个队列,即broker数量*每个broker队列数量就行了,但是通过broker模式创建的话,就有可能造成某些broker负载过高,于是我想通过集群模式去创建topic,我们都知道集群模式创建broker会默认在集群下的每个broker都创建topic的队列路由信息,那么我现在这个集群中创建的每个topic的消息队列至少都会有20个了。


有没有可能以后会多一个创建机制:在集群模式下,只需要输入topic名称和消息队列数量,至于队列被分配到哪个broker,取决于broker的负载情况。


同样期待以后的版本迭代中如愿增加这个功能吧。


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 存储 监控
|
6月前
|
消息中间件 RocketMQ
RocketMQ报错:MQClientException:no route info of this topic的解决
RocketMQ报错:MQClientException:no route info of this topic的解决
130 0
|
8月前
|
消息中间件 存储 负载均衡
一文读懂RocketMQ的高可用机制——消息发送高可用
一文读懂RocketMQ的高可用机制——消息发送高可用
193 1
|
2月前
|
消息中间件 存储 运维
|
2月前
|
消息中间件 负载均衡 Java
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息消费长轮训机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息消费长轮训机制体系的原理分析
27 0
|
2月前
|
消息中间件 存储 安全
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
30 0
|
2月前
|
消息中间件 物联网 网络性能优化
MQTT常见问题之MQTT的topic超出上限25个如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
6月前
|
消息中间件 Java Maven
消息中间件系列教程(12) -RabbitMQ-消息确认机制
消息中间件系列教程(12) -RabbitMQ-消息确认机制
45 0
|
2月前
|
消息中间件 存储 Cloud Native
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
|
4月前
|
消息中间件 网络架构
【面试问题】什么是 MQ topic 交换器(模式匹配) ?
【1月更文挑战第27天】【面试问题】什么是 MQ topic 交换器(模式匹配) ?

热门文章

最新文章