水平扩展蚊子经纪人

Posted

技术标签:

【中文标题】水平扩展蚊子经纪人【英文标题】:Horizontally scaling mosquitto broker 【发布时间】:2015-09-21 02:26:00 【问题描述】:

我正在考虑将 mosquitto 用于 MQTT 代理。根据我的阅读,我意识到 Mosquitto 不支持水平缩放。

到目前为止,Mosquitto 可以满足我要求的所有其他标准。

我不确定这个问题是否过于笼统或过于宽泛,但我想知道的是,是否有任何方法可以实现 Mosquitto 的缩放功能、负载平衡等。

【问题讨论】:

【参考方案1】:

Mosquitto 可以通过桥接功能进行水平扩展,其中一个代理将所有消息复制到另一个代理。

您可以在此处查看基本配置示例: http://e.verything.co/post/62163759361/bridging-two-mqtt-brokers

您还应该查看 MQTT Malaria 以测试您的设置的可扩展性https://github.com/remakeelectric/mqtt-malaria

【讨论】:

为了正确性,必须提到还有其他选项可以实现高可扩展性。一些代理支持集群(还有像verne.mq 或rabbitmq.com 这样的开源代理),它们以不同的方式应对可扩展性的挑战。通常,订阅和会话状态在所有集群节点上都可用,从而使 MQTT 集群在设备中显示为一台大型服务器。 示例提供了使用桥接仅连接 2 个代理的方法。是否可以扩展到超过 2 个,例如 10 个使用桥接且没有循环的代理? 我不考虑这种扩展,因为所有消息仍然会发送到两个(实际上是 max=2)服务器。您需要一个可以在节点之间移动订阅的系统,以便消息及其相关方都可以连接到同一个节点,但所有用户都可以分布在节点上。

以上是关于水平扩展蚊子经纪人的主要内容,如果未能解决你的问题,请参考以下文章

基于Custom Metrics API的CoreDns水平扩展

垂直扩展+水平扩展

为啥 sql 可以垂直扩展而 nosql 可以水平扩展

Cloud SQL 水平扩展

代理模式

动态代理