それぞれがサーバーに接続し、サーバーからデータを受信する複数のアプリプロセスがあります。多くの場合、接続されているサーバーと取得されているデータはプロセス間で重複しています。そのため、ネットワーク全体でデータが不必要に重複し、必要以上の接続が発生し(サーバーに負担がかかります)、データがアプリのメモリに冗長的に保存されることになります。
1つの解決策は、複数のアプリプロセスを1つのプロセスに結合することですが、ほとんどの場合、それらは実際には論理的に異なり、何年もの作業になる可能性があります。
残念ながら、レイテンシーは非常に重要であり、データの量は膨大です(1つのデータはそれほど大きくない場合がありますが、クライアントがリクエストを行うと、サーバーはデータの変更に応じて更新の高速ストリームを送信します。 20MB /秒。これらはすべて、可能な限り最短の遅延で要求元のアプリに提供する必要があります)。
頭に浮かぶ解決策は、アプリプロセスがデータを要求するローカルデーモンプロセスをコーディングすることです。デーモンは、適切なサーバーへの接続がすでに存在するかどうかを確認し、存在しない場合は接続を確立します。次に、データを取得し、共有メモリを使用して(遅延の懸念があるため、それ以外の場合はソケットを使用します)、要求元のアプリにデータを渡します。
冗長な接続のみを解決する短期的な簡単なアイデアは、unixドメインソケット(これはunix OSで実行されますが、可能な場合はクロスプラットフォームライブラリに固執することを好みます)を使用して、すべてのプロセスなので、単一の接続を共有します。これに関する問題はバッファを消費することです-私はすべてのプロセスがソケットを介して来るすべてを見るようにしたいです、そして私がこのアプローチで正しく理解するならば、ソケットで1つのプロセスを読み込むと他のプロセスが彼らの同じデータを見るのを防ぎます次の読み取り(共有記述子内のオフセットがバンプされます)。