2

我计划使用 Mosca 或 Mosquitto 代理(因为它们是开源的),以实现具有消息队列复制的可扩展架构,以避免在代理最终失败时丢失尚未由代理传递的消息。
正如我所读到的,mosquitto 是一个成熟且非常稳定的解决方案,具有使用桥接的水平扩展能力。但是我找不到任何将消息写入数据库的插件(所有代理都通用),所以我认为这是一个限制,因为如果我们有两个代理负载平衡并且其中一个死了,那么所有的消息这个在经纪人恢复之前无法交付经纪人。另一方面,Mosca 允许我们使用 Redis 进行扩展,如果代理 1 死了,那么代理 2 仍然可以传递消息,因为它们存储在一个公共数据库中。这样我就可以使用redis的主从配置来避免单点故障。

所以我的问题是:

1) mosca 是生产的好选择吗?

2)是否可以使用redis来分配带有mosquitto的消息队列?

4

1 回答 1

7

Horizontal scalability is incredibly hard to add as an feature to MQTT brokers, since it requires engineering for that scalability from the start. Also, just replicating queues for undelivered messages won't help for resilience or fault-tolerance.

Even if it would be easy to add, I would NOT go with redis, since it essentially loses messages: https://aphyr.com/posts/283-jepsen-redis

If you want horizontal scalability, I'd recommend to check out a broker that has clustering, horizontal (or better: linear) scalability built-in and does allow network splits.

Here is a series about MQTT and clustering: http://www.hivemq.com/blog/clustering-mqtt-introduction-benefits/

于 2016-10-25T11:50:12.930 回答