0

Javaインターフェイス用のデータ分析プラグインを作成したいと思います。このインターフェースは、異なるコンピューターで実行される可能性があります。インターフェイスはコマンドを送信し、Pythonプログラムは大きなデータを返すことができます。インターフェイスは、JavaWebstartシステムによって配布されます。どちらもMySQLサーバーからメインデータにアクセスします。

コミュニケーションを実装するためのさまざまな方法と利点は何ですか?もちろん、私はインターネットでいくつかの調査を行いました。多くの提案がありますが、私はまだ違いが何であるか、そしてどのようにそれを決定するかを知りません。(私はそれらについての知識がありません)

ソケットを使用するという提案を見つけましたが、これは問題ないようです。接続ごとにPython分析プロセス専用のサーバーを作成するのは簡単ですか(その特定のクライアントに対する1回の通信要求の後に一時データが保持される場合があります)。

ソケットの使い方とYAML文字列を渡す方法を学ぶことを考えていました。たぶん私の主な質問は、RabbitMQ、ZeroMQ、CORBA、SOAP、XMLRPCなどのシステムとの関係と利点は何ですか?

パイプまたは共有メモリを使用するための提案もありました。しかし、それは私の要件に適合しませんか?

いずれかの方法には、デバッグやその他の特殊性に利点がありますか?

技術的な説明から判断するのは難しいので、誰かが私が技術を理解し、解決策を決定するのを手伝ってくれることを願っています。

(私はJython、JEPPなどのソリューションを考慮していません...)

4

1 に答える 1

1

あなたが説明したメリットについて意見を述べると、フェッチとシリアル化に時間がかかる可能性のある大きなデータ/クエリを処理しているようです。その場合は、スタックせずに同時接続を処理できるものを使用する必要があります。スレッドをアップします。そのため、Pythonドメインでは、Twisted以外のネットワークライブラリをお勧めすることはできません。

http://twistedmatrix.com/documents/current/core/examples/

バニラHTTPを使用する場合でも、独自のプロトコルを使用する場合でも、ツイストは並行ネットワーキングのワンストップショップです。確かに、名前はたくさん使われ、ドキュメントはAtlanteanですが、時間をかけて学ぶと、ネットワーキングドメインで達成できないことはほとんどありません。基本プロトコルとファクトリを拡張して、reactorベースのイベントループでデータを処理し、準備ができたら遅延要求に応答できる1つのサーバーを作成できます。

シリアル化の形式は、実際にはデータの性質によって異なります。応答として出力されるものにバイナリはありますか?複雑なタイプ?その場合、JSONは除外されますが、これが最も一般的なシリアル化形式になりつつあります。YAMLは、Pythonコミュニティの中で特権的な立場を享受しているように見えることがあります。シリアルで行った作業のほとんどは、JavaScriptを使用してフロントエンドでレンダリングされるデータであったため、あまり使用していません。

メッセージキューは、応答を停止せずにバックグラウンドタスクを延期する必要がある場合に、ツールボックスで実際に最も重要なツールです。これらは一般に、複雑な処理を行う必要がある場合にHTTPリクエストがハングしないようにする必要があるウェブアプリで使用されます。そのため、UIは早期にレンダリングし、処理が行われる暗黙の「約束」を期待できます。これらには2つの重要な特性があります。プロトコルの応答が送信された後もプロセスが終了する可能性があるという結果整合性に依存し、タスクが失敗した場合のフェイルセーフおよび再試行ディレクティブもあります。彼らはあなたが「できるだけ早くこの本当に難しい仕事をしなさい、そして私はあなたがそれを成し遂げることを信頼している」問題領域を提出するところです。

潜在的に巨大な応答本体、およびシリアル化された出力内の比較的単純なデータ型について話していなければ、Twistedで単純なHTTP遅延サーバーをローリングしても問題はありません。

于 2012-06-28T16:26:26.500 に答える