22

高いスケーラビリティを必要とする RESTfull アプリケーションに取り組んでいます。RESTfull アプリケーション用の Netty ベースのフレームワークを検討しています。利用可能なオプションをいくつか調べて、非ブロッキング実装として提供できるものを取得しようとしました。ここに私の発見があります:

  1. rest.li --> Netty ベースの NIO 実装についてはまだ実験段階です。したがって、本番環境には対応していません。
  2. RESTEasy --> Netty 4.x をサポートする標準 JBoss プロジェクト。ただし、フルスタックの Netty ベースの NIO 実装の代わりに、RESTEasy は Netty と RESTEasy 間のバッファー交換です。Netty の利点を利用していません。したがって、スケーラビリティは、Netty ベースのフレームワークから期待されるほど高くはありません。
  3. Netty-http コンポーネント --> 別のオプションは、Bean で公開されているサービスにリクエストをルーティングするためのエンドポイントとして Netty-http コンポーネントを使用しながら、Apache Camel を統合することです。RESTEasy と同じだと思います。Netty-http コンポーネントのみが Netty ベースの NIO 機能を使用し、システムの残りの部分は古い IO を使用します。スケーラビリティを得るのにあまり役立たないと思います。
  4. RESTExpress --> RESTFull アプリケーション用の Netty ベースのフレームワークであると主張しています。しかし、まともなコミュニティがなく、高度なセキュリティを必要とするエンタープライズ アプリケーションには (非常に新しいため) 信頼できません。

上記の調査結果を得る前に、すぐに使用できるフレームワークを使用して、作業をより迅速に完了したいと考えていました。

私はそれが意見に基づく質問であることを知っています。しかし、それでも、アプリケーションに適したフレームワークを選択するために真剣に助けが必要です. 場合によっては、Netty ベースの REST フレームワークがない場合: 私のアプリケーションで低レベルの Netty ベースの NIO コードを配管するのが賢明でしょうか? どんな助けでも感謝します。前もって感謝します。

4

7 に答える 7

13

本当にノンブロッキングが必要な場合は、ゼロからノンブロッキングを行い、適切な REST クライアントを用意する必要があります。それ以外の場合、私のコメントで述べたように、パフォーマンスの違いはごくわずかであり、多くの場合、NIO (スレッド共有を使用する Netty) ではさらに悪化します。

私が知っているライブラリは、Vert.xFinagle (ノンブロッキング データ アクセスなどの他のものが欠けている) からゼロからノンブロッキングを行う 2 つだけです。

また、Tomcat や、JAX-RS をサポートする NIO と連携できるその他のさまざまなサーブレット コンテナーについても知っておく必要があります。問題は、NIO がサポートされていても、リクエストごとに 1 つのスレッドになることです。Play、Finagle、Vert.x、および純粋な Netty (NIO に関係なく) のみが異なる共有スレッド モデルをサポートしているため、同時実行を行うための異なるメカニズムがあります。

于 2013-11-05T15:56:30.923 に答える
6

以下は、私が認識している REST アプリケーション用のマイクロフレームワークのリストです。

回答にコメントしてください。回答を更新してさらに追加します。

于 2013-11-05T07:35:46.160 に答える
3

Playをご覧になりましたか?

あなたは Netty を使用する傾向があるように見えますが、非常に単純なGrizzly + Jerseyセットアップで十分に機能する可能性があります。簡単な Glassfish 4.0 JAX-RS アプリもうまくいくかもしれません。

于 2013-11-04T22:09:15.193 に答える
0

Netty と RxJava を使用するもう 1 つのフレームワークがあります。これは datamill と呼ばれます。

機能的なリアクティブ スタイルを使用して Web アプリケーションを構築することに興味がある場合は、それを検討する必要があります。

于 2016-11-22T03:46:24.770 に答える
0

Spring Framework 4.2.5.RELEASEのAsyncRestTemplateを見ることができます。Netty の上で使用できます。

注: デフォルトでは、AsyncRestTemplate は標準の JDK 機能に依存して HTTP 接続を確立します。AsyncClientHttpRequestFactory を受け入れるコンストラクターを使用して、Apache HttpComponents、Netty、OkHttp などの別の HTTP ライブラリを使用するように切り替えることができます。

于 2016-03-16T14:13:56.750 に答える