0

バックグラウンド

私の Java アプリケーションでは、かなり大量のデータが ConcurrentHashMap に格納されています。

ここで、クライアントが TCP ポート経由でアプリケーションに接続するときに、このデータを XML 形式でコンシューマー クライアントに提供する必要があります。

一言で言えば、クライアントが接続するTCPサーバーがあります。クライアントが接続するとすぐに、Map 内のすべてのデータを読み取り、それを XML 形式 (カスタム) で TCP ポートに出力する必要があります。マップ内のデータは、ワーカー スレッドなどを使用して別の場所から自動的に更新され続けるため、この tcp ポートでクライアントに新しいデータを何度も送信し続ける必要があります。

メモリと CPU を効率的に使用できるソリューションを実装したいと考えています。.

注:将来的には、複数の出力形式 (カンマ区切り、Json、HL7 など) をサポートする必要があるかもしれません。簡単にするために、クライアントが特定の形式で接続できる別の TCP ポートがあるとします。

質問

そうは言っても、TCPサーバーの実装とConcurrentHashMapからXMLへのデータ変換プロセスに最適なソリューションを探していました。

TCP サーバーの場合、人々は次のように話します。

私のクライアントは第三者になるので、クライアントは Kryonet に必要な「登録」業務を行わないため、kryonet は廃止されたと思います。MINAとNETTYのどちらがスケーラブルで分かりやすいですか?他の提案はありますか?

ConcurrentHashMap から XML へのデータ変換には、XSTREAMを使用することを考えていました 。

ありがとう

4

2 に答える 2

1

数百または数千の接続がある場合は、スケーラビリティを検討する必要があります。ただし、接続数が少ない場合は、プレーンなソケットを使用するだけで十分な場合があります。

データの一部のみが変更されている場合は、変更されたデータのみを送信するか、少なくとも変更された XML のみを再生成することをお勧めします。

于 2011-07-20T16:38:29.200 に答える
1

どのくらい速くする必要がありますか?Tomcat と spring-mvc のような標準フレームワークを使用するだけで、10 ミリ秒 (および RTT) 未満で返されるものを作成できるはずです。JAXB を使用してオブジェクトを XML に変換します。json などの追加の出力形式をサポートしたい場合は、簡単です (Jackson ライブラリを使用してください。API は JAXB に似ています)。

ソケット サーバー アプローチを試した同僚がいて、最終的には tomcat を使用しました。

于 2011-07-20T16:38:54.130 に答える