RedisとRabbitMQの両方を評価した後、次の理由でブローカーとしてRabbitMQを選択しました。
- RabbitMQを使用すると、SSL証明書を使用して、ブローカーに送信するデータを暗号化することにより、組み込みのセキュリティレイヤーを使用できます。つまり、誰もデータを盗聴したり、重要な組織データにアクセスしたりすることはありません。
- RabbitMQは非常に安定した製品であり、ボトルネックになることなく、1秒あたりの大量のイベントと多くの接続を処理できます。
- 私たちの組織では、すでにRabbitMQを使用しており、RabbitMQの使用に関する社内知識が豊富で、シェフとの統合の準備が整っています。
スケーリングに関しては、RabbitMQには、冗長ブローカー環境を実装するためにロードバランサーに加えて使用できるクラスター実装が組み込まれています。
私のRabbitMQクラスターはアクティブアクティブですか、それともアクティブパッシブですか?
ここで、RabbitMQを使用する際の弱点について説明します。
- ほとんどのLogstashシッパーはRabbitMQをサポートしていませんが、一方、Beaverという名前の最良のシッパーには、問題なくRabbitMQにデータを送信する実装があります。
- Beaverの現在のバージョンでのRabbitMQの実装は、パフォーマンスが少し遅く(私の目的では)、1台のサーバーからの3000イベント/秒の速度を処理できず、サービスがクラッシュすることがありました。
- 現在、RabbitMQのパフォーマンスの問題を解決し、ビーバーの配送業者をより安定させる修正に取り組んでいます。最初の解決策は、同時に実行でき、荷送人により多くの力を与えることができるプロセスをさらに追加することです。 2番目の解決策は、Beaverを変更してデータをRabbitMQに非同期で送信することです。これは、理論的にははるかに高速であるはずです。今週中に両方のソリューションの実装を完了することを願っています。
ここで問題をフォローできます:https://github.com/josegonzalez/python-beaver/issues/323
そして、ここでプルリクエストを確認してください:https://github.com/josegonzalez/python-beaver/pull/324
他にご不明な点がございましたら、お気軽にコメントを残してください。