既存のオンラインゲーム用のキャッシングプロキシコンポーネントとともに、新しいクライアントを構築しています。現在の設定は次のようになります。
Server
| \
TCP TCP
| \
Client1 Client2
新しい設定は次のようになります。
Server
| |
TCP TCP
\ \
Proxy <-- (New!)
| \
0MQ 0MQ
| \
Client1 Client2 <-- (New!)
プロキシコンポーネントは既存のゲームサーバーの近くに配置され、古い回線ベースのTCPプロトコルをサーバーに話し、0MQを介して新しいGoogleプロトコルバッファベースのプロトコルを新しいクライアントに話します。サーバーとそのクライアント間でメッセージを転送および変換することに加えて、プロキシはクライアント宛てのメッセージをキャッシュ(protobuf)します。
サーバーはクライアントの要求に応答しますが、特定のクライアントまたはすべてのクライアントに一方的なメッセージを送信する場合もあります。プロキシは特定のクライアント宛てのメッセージのキャッシュを維持するため、各クライアントに関連付けられた状態を維持する必要があります。
ZeroMQガイドをかなり読んでいますが、その「パターン」またはソケットの組み合わせのどれがこのセットアップに最適かはまだわかりません。ここに行くための最良の方法についてアドバイスを与えることができるZeroMQウィザードがそこにあることを願っています。
質問は言語固有ではありませんが、プロキシコンポーネントはJavaで記述され、クライアントはC#で記述されます。
よろしくお願いします!