マルチスレッドのコメット サーバー ライブラリを探しています。スレッドプール (4 ~ 8 スレッド) で動作する async io (epoll を使用) が必要です。マルチスレッド化されていれば、Tornado は理想的です。
マルチスレッドの理由 接続されているすべてのユーザーからのデータを処理して提供する必要があります-データベースを使用してトルネードインスタンス間で同期できますが、nosqlでさえ速度が大幅に低下します-ほとんどすべてのリクエストがデータベースの書き込み/更新で終了します-非同期を使用してもドライバーは良い考えではありません。すべてをローカルの揮発性メモリに保存できるため、非常に高速になりますが、プロセス間通信を避けるために単一のプロセスで実行する必要があります。スケーリングする必要はありません-単一のボックスで十分です-しかし、高速でなければなりません。一部のデータは MongoDB に保存されますが、mongo クエリの数は通常のリクエストの 5% 程度になります。
そして重要なこと - セマフォ (および他の高レベルのアプローチ) は私にとってロケット科学ではないので、同期を恐れていません。
要件:
- 非同期IO
- ノンブロッキング
- 数千の同時接続
- 速い
- 基本的な HTTP 機能 (GET、POST、Cookie)
- 要求を非同期に処理する機能 (何かを実行する、コールバックを使用した非同期呼び出し (データベース クエリなど)、コールバックを処理する、データを返す)
- スレッドプール
- C++/Java/Python
- シンプルで軽量
async mongo ドライバーもあるといいですね
私はBoost ASIOを調べましたが、必要なことを実行できるようです-しかし、アプリケーションに集中したい-httpリクエスト処理を記述しません。
Tornado(理想的だがシングルスレッド)、Simple(リクエストを非同期に処理し、非同期呼び出し後にデータを返すことができるかどうかわからない)、BOOST ASIO(非常に素晴らしいが低レベルすぎる)について読んだ