web-dev-qa-db-ja.com

Javaでの単純なバックエンドサーバー実装用のNIOライブラリ(Netty、Grizzly、kryonetなど)はどれですか?

フロントエンドは単純なJetty(後でTomcatに置き換えられる可能性があります)サーバーです。サーブレットを通じて、製品の機能を公開するためのパブリックHTTP API(多かれ少なかれRESTful)を提供しています。

バックエンドには、いくつかの種類のメンテナンスタスクを実行するJavaプロセスがあります。バックエンドプロセスは通常、時間になると独自のタスクを実行しますが、フロントエンドはウェイクアップする必要があります。バックエンドで特定のタスクを実行するためのバックエンド。

このタスクに最適な(N)IOライブラリはどれですか? Netty、Grizzly、kryonet、プレーンRMIを見つけました。今のところ、Nettyと言いたくなります。使い方は簡単で、おそらく非常に信頼性があります。

この種のセットアップの経験がある人はいますか?あなたの選択は何でしょうか?

ありがとう!

22
Japer D.

あなたの質問に答えるこの文書を翻訳してみてください。 http://blog.xebia.fr/2011/11/09/Java-nio-et-framework-web-haute-performance/

この社会は、フランスの有名なJava EEの専門家として、VmWare(USI2011)が後援するフランスの挑戦の文脈でNIOサーバーの多くの概念実証を行いました。それは簡単なクイズアプリを構築することでした。 100万人の接続ユーザーの負荷を処理できます。

彼らは素晴らしい結果でその挑戦に勝ちました。それらの実装はNetty + Gemfireであり、CachedThreadPoolをMemoryAwareThreadPoolに置き換えるだけでした。

Nettyは素晴らしいパフォーマンスを提供しているようで、十分に文書化されています。

彼らはまた、トルネード(python/facebook)に触発されたDeftを検討しましたが、それでも彼らにとっては少し未熟です

編集:ここに 翻訳されたリンク コメントで提供されています

17

私の好みはNettyです。シンプルでありながら柔軟性があります。非常に高速で、Netty周辺のコミュニティは素晴らしいです。

4
Mike Heath

私が働いている会社は現在評価中です CoralReactor 。これは商用ソフトウェアですが、Java NIOでこれまでに見た中で最も簡単なAPIを備えています。私の個人的な意見では、Nettyは、特にゴミをなくして単一にしたい場合は、物事を複雑にしすぎます。 -スレッド化。これは、金融、広告、ゲーム業界の多くの企業の要件です。

3
LatencyGuy

私はJMSを使用してそれらを分離し、バックエンドがそこに座ってリッスンしているいくつかの(セットの)制御キューを持っているだけで完了です。ここにカスタムnioapiを作成する必要はありません。

サンプルプロバイダーの1つはhornetqです。これは、インプロセスのjmsブローカーとしても実行でき、内部でNettyを使用します。

2
Matt