2011-03-10 16 views
0

Mornink!普及しているサービス/ Unixマシン間で通信するための最善の方法は何ですか?

異なるロールを実行し、異なるサービスを実行する複数のUNIXサーバーで構成されるワイドシステムを設計、記述、実装する必要があります。システムは弾丸で、丈夫で速くなければなりません。ええ、私は知っています。 ;)私はこの仕事にどのようにアプローチするか分からないので、私は設計段階から離れる前にあなたの意見を聞いてみることにしました。ここでは、ワークフローが流れしようとしている方法です:

  • ユーザーは、この需要が格納されているサービス
  • の要求を設定するウェブサイト、(?データベース)と中央システムへのメッセージのいくつかの種類と相互に作用しています(クラスタリングされた)がデータベース/キューの新しい需要について送信されている
  • セントラルシステムでは、要求が収集され、必要なサービスセットアップの一部である業務を実行するためにさまざまなシステム(クラスタ)に信号を送信します
  • 、彼らは現在サービスが提供されている中央システムまたはウェブサイトにメッセージを送信する

ここで、これらの要求を何らかの種類のキューに格納して実行する、最新の堅牢でクリーンで効率的な方法は何ですか。私はいくつかの信号を送るべきですか、または私はすべてのサブシステムが新しいデータのためのどんな種類のキュー/ dbをもチェックするようにすべきですか?それがデータベースであれば、そのキューは何か?どのようにメッセージに対処するには?私は、単一のtcp接続を開いて、その上にデータを送信することを考えましたが、もう一方の側でアクション/機能をトリガーするcomandsと一緒に考えましたが、詳細な検査では、他のより良い方法が必要です。だから、私はSpring Pythonを見つけました。それは90年代のことだと批判されています。

私はその非常に広い質問を知っているが、私は本当にあなたがここに愚かな何かを作る私はそのデザインのまわりで私の頭をラップ助けることはできません願っています:)事前に

ありがとう!

答えて

0

あなたのためのいくつかの一般的なアイデア: マスタークライアントのアプローチがあります。リクエストはマスターに挿入され、データベースに格納されます。マスターは各クライアントの状態を知っています(同じデータベース)。リクエストがあるたびに、マスターはそれをフリー・クライアントにリダイレクトします。クライアントは、タスクが終了した時点(応答があれば)を返し、マスターから新しいタスクを受け取れるようにします(プーリングの必要性がなくなります)。 Webサービスを使用して通信を行うことができます。 HTTPリクエスト/ポストはすべてのケースを解決する必要があります。実際にTCPレベルに下がる必要はありません。

ただの一般的なアイデアは、役に立つと思っています。

0

そこには、かなりうまく機能するPythonフレンドリーなメッセージキュー技術がいくつかあります。私が知っている上位2つはActiveMQRabbitMQです。どちらもPythonでうまくいきますが、ActiveMQが現在ActiveMQ(18ヶ月前)がRabbitMQより優れていることがわかりましたthis comparisonが見つかりました。

+0

比較リンクを再設定できますか?それは現在仕事をしません。 – SpankMe

+0

@SpankMe - 実際には、コピー/ペーストのエラーがありました:)それは残念ですが、今更新されました –

+0

ありがとう!しかし、私はアイデアに売られていません、ほとんどはbeacuse私はそのようなソリューションの長所/短所を取得しないでください。これらのMQ技術は、複雑さの余分な層を適用し、新しい変数をもたらしています。私は単純なことを考えています。そのようなことは、通常、最も堅牢で速いものです。この単純なSpring Pythonでこのことができない(またはすべきではない)理由がわかりました。私はこの技術を選択しようとすると少し失われていると思います。 – SpankMe

関連する問題