1

ここでは Web アプリケーションを無視したいと思います。それらを水平方向にスケーリングする、つまり複数のサーバー インスタンスを一緒に使用するには、マシン上でサーバー ソフトウェアを複製し、リクエストをサーバーに転送する一種のルーターを使用するだけで「十分」です。ビジーでない」サーバーマシン。

しかし、サーバー アプリケーションでユーザーがリアルタイムで共同作業できるとしたらどうでしょうか。

特定のクライアント X の要求に対する応答が、接続が別のマシンによって管理されているクライアント Y のコンテキストに依存する場合、「マシン間」通信が必要になります。

そのような場合に人々が使用した「設計ソリューション」の種類を知りたいです。

たとえば、Facebook の人々は、ソーシャル アプリのチャット機能を有効にするときに、そのような状況に既に遭遇したに違いありません。

アドバイスをよろしくお願いします。

4

2 に答える 2

1

これを達成するための 1 つの解決策は、memcacheのような分散キャッシュを使用することです(Facebook もそのアプローチを使用しています)。次に、すべてのノードで必要なすべての情報がそのキャッシュ (および永続的である必要がある場合はデータベース) に格納されるため、すべてのノードがその情報にアクセスできます (ノード間の待機時間が非常に短くなります)。

よろしく

于 2011-06-08T17:14:38.397 に答える
0

透過的な水平方向のデータベース スケーラビリティを提供し、ACID セマンティクスを保証するソリューションを検討する必要があります。これをさまざまなレベルで提供する多くのソリューションがあります。あなたが参照している Facebook の人々は、結果整合性を受け入れることで問題を解決しましたが、あなたの質問は、結果整合性を受け入れることができないと私に信じさせます。

于 2013-08-12T20:34:25.390 に答える