19

スループットがシステム内のサブスクライバー数とチャネル数に比例してスケーリングする巨大な分散システムを設計する場合、どちらが優れているでしょうか?

1) Redis クラスター(Redis 3.0 アルファの場合のみ。クラスター モードの場合、あるノードでパブリッシュし、別の完全に異なるノードでサブスクライブすることができ、メッセージが伝播して到達します)。Publish の複雑さはO(N+M)です。ここで、N はサブスクライブされたクライアントの数、M はシステム内のサブスクライブされたパターンの数ですが、Redis クラスターではどのようにスケーリングしますか? 私はこれについての知識に基づいた推測を受け入れます。

2) 3.x 以降のZeroMQは、サーバー側のフィルタリングを行うため、時間の複雑さも伴いますが、ドキュメントではそれについて何も見ていません。規模を拡大したい場合は、多数のサーバーを任意のチャネルに公開し、各サブスクライバーがすべてのサーバーに接続して、目的のチャネルをサブスクライブすることができます。それはいいですね。

では、巨大なパブリッシャー システムの水平スケーリングに適しているのはどれでしょうか? 私が調べるべき他の解決策は何ですか? レイテンシとスループットを最小限に抑えたいが、水平方向にスケーリングできることを忘れないでください。

4

2 に答える 2

15

レイテンシを最小限に抑えたいと思います。チャンネル数は関係ありません。主な要因は、パブリッシャーの数とサブスクライバーの数、メッセージ サイズ、パブリッシャーごとの 1 秒あたりのメッセージ数、各サブスクライバーが受信するメッセージの数です。ZeroMQ は、1 つのノードから別のノードへ、毎秒数百万の小さなメッセージを処理できます。ボトルネックは、ソフトウェアよりずっと前にネットワークになります。したがって、ほとんどの大規模な pubsub アーキテクチャは、ZeroMQ がサポートする PGM マルチキャストのようなものを使用します。

于 2012-12-07T21:51:37.957 に答える