2016-10-25 4 views
2

私は、メッセージキューの複製を持つスケーラブルなアーキテクチャを実現するために、MoscaまたはMosquittoブローカを使用することを計画していました(オープンソースのため)。ブローカの最終的な障害ではまだブローカによって配信されなかったメッセージを失いません。
私が読んだとおり、モスキートは成熟した非常に安定したソリューションで、ブリッジを使った水平スケーラビリティを備えています。しかし、データベース(すべてのブローカーに共通)にメッセージを書き込むためのプラグインを見つけることができませんでした。つまり、2つのブローカーの負荷が均衡し、そのうちの1つが死んでしまうと、ブローカは、ブローカが回復するまで配信できません。 一方、MoscaはRedisを使用してスケールすることができます。ブローカ1が死んでも、共通データベースに格納されているため、ブローカ2は依然としてメッセージを配信できます。そして、そのようにして、私はredisのマスタースレーブ設定を使用して、単一障害点を回避することができます。MosquittoとMoscaの水平スケーラビリティと復元力

だから私の質問は以下のとおりです。

1)生産のための良い選択モスカますか?

2)redisを使用してメッセージキューをモスキートに割り当てることはできますか?

答えて

5

水平スケーラビリティは、MQTTブローカにフィーチャとして追加するのは非常に難しいです。これは、スケーラビリティを最初からスケーラビリティのためにエンジニアリングする必要があるためです。また、配信されなかったメッセージのキューを複製するだけでは、復元力やフォールトトレランスには役立ちません。

それは追加するのは簡単だろうとしても、それは基本的にメッセージを失うことから、私は、Redisので行くだろうが:あなたが水平方向のスケーラビリティをしたい場合はhttps://aphyr.com/posts/283-jepsen-redis

、私はクラスタリングを持っているブローカーをチェックアウトしてお勧めしたいです、水平(またはより良い:線形)スケーラビリティが組み込まれており、ネットワーク分割が可能です。

ここにMQTTとクラスタリングに関するシリーズがあります。http://www.hivemq.com/blog/clustering-mqtt-introduction-benefits/

関連する問題