请问mqtt订阅,如何做多核负载均衡?
发布于 4 年前 作者 dallball 6965 次浏览 来自 问答

我们在后端起了一个mqtt的客户端,但因为在多个进程里订阅同一个主题,会造成同一条消息过来会回复多次。 所以现在只在主进程里订阅主题。 不过最近并发有点太高了,有点吃不消。 请问这种mqtt订阅如何做负载均衡??

5 回复

你们是自建的 mqtt 服务吗?可以试一下阿里云的 MQTT 服务,在服务端直接使用 MQ 的方式就好了,mqtt 协议不适合用在服务端

emqtt支持共享订阅。 共享订阅(Shared Subscription) 共享订阅(Shared Subscription)支持在多订阅者间采用分组负载平衡方式派发消息:

                        ---------
                        |       | --Msg1--> Subscriber1

Publisher–Msg1,Msg2,Msg3–>| EMQ | --Msg2–> Subscriber2 | | --Msg3–> Subscriber3 --------- 使用方式: 订阅者在主题(Topic)前增加’$queue’或’$share/<group>/’前缀。

https://docs.emqx.io/broker/v3/cn/changes.html?highlight=group

这不是用mqtt能处理的,这个和redis一样,都是pub/sub,而不是消息队列,我觉得你应该需要的是MQ类中间件

无论自建还是公有云 消费端量大了都解决不了,共享订阅可以缓解下,如果物联网的话,楼上 EMQ 那个教程里面共享订阅大多 Broker 都支持 有个废弃项目可以参考下 https://github.com/wivwiv/egg-iot-with-mqtt/blob/master/README.md#服务启动配置

根本办法还是先到 Kafka 等消息 流中间件,再慢慢来处理

回到顶部