2

現在、パフォーマンスを優先する非同期 REST API に取り組んでいます。

当初、Node.js のイベント ドリブン アーキテクチャはユースケースにうまく適合するため、Node.js をデプロイしたいと考えていましたが、残念ながら、JavaScript はまだ SCTP ソケットをサポートしていません。

これにより Python にたどり着き、いくつか検討した結果、uWSGI と gevent を使用することにしました。

ただし、アーキテクチャの性質上、オーバーヘッドが大きい領域が 2 つあります。

データをメモリにキャッシュする問題を解決するために、パフォーマンスの良い uWSGI キャッシュ フレームワークを使用します。

2 つ目の問題は、アプリケーションが SCTP を介してバックエンド ハンドラーに接続することです。現在の設定では、この接続が確立され、リクエストごとに閉じられます。毎秒数千のリクエストがあるため、大きなオーバーヘッドが残ります。

理想的なケースでは、ソケット接続を永続的に確立し、リクエストごとに再利用したいと考えています。PHP では、永続的なソケット接続でこれが可能です。Python / uWSGI は同様の機能を提供していますか? または、uWSGI キューイング フレームワークを使用して、リクエストをまとめて処理することもできます。

どんなアドバイスでも大歓迎です。

4

1 に答える 1

0

gevent モードを有効にすると、uWSGI は純粋に (つまり、モンキー パスが不要であることを意味します) イベント駆動型になります (そうしないと、gevent を使用する利点はありません)。Gevent はイベント ドリブン + greenlet を意味します (node.js のようなコールバック地獄ベースのコードを書く必要がなくなります)

ここで魔法の詳細: http://uwsgi-docs.readthedocs.org/en/latest/Async.html

WSGI アプリケーションはアプリケーションなので、永続的な接続が必要な場合は、サーバーの起動時などに開くだけで、php のような特別なサポートは必要ありません。

于 2013-07-19T05:10:02.677 に答える