0

私の現在のセットアップでは、Tornado を使用する単一のクライアント サーバー、スタンドアロン データベース サーバー、および Web サイト用の別のスタンドアロン サーバーがあります。

(複数のコアを利用するために) 同じシステムで 2 つ目のクライアント サーバー プロセスを実行することを検討しています。「クライアント」が接続しているサーバーを特定するためのアドバイスが必要です。各クライアントは、複数の接続 (インスタンス) を持つことができます。

私はすでに memcached を使用してユーザー識別子のリストを保持し、それらを接続先のサーバーにリンクすることを検討しましたが、それはあまりうまくスケーリングしないようです (たとえば、6 桁の接続ユーザーを持つ)。 .

データベース ルックアップでも同じ問題が発生します。マイクロ最適化を行わずに、サーバーを可能な限り最適化しましたが、個人的には眉をひそめています。

現在のサーバー方法論:

接続時: 接続を受け入れ、IP ごとの最大接続数のレート制限。クライアント インスタンスを「clientList」という名前のリストに追加します。

クライアントからのデータ: 1 秒あたりの最大メッセージ数のレート制限。クライアント作業キューにデータを追加します。クライアントがその作業キュー専用のスレッドを持っている場合: その作業は現在のスレッドによって処理されます。それ以外の場合は、このユーザーの作業キュー用に新しいスレッドを作成し、それを開始します。

TLDR: メッセージをそのユーザーに転送するために、クライアントが接続したサーバーを効率的に保存するにはどうすればよいですか。

4

0 に答える 0