2012-03-01 3 views
3

登録されたクライアントアプリケーション用のパブリックデータサブスクリプションWebサービスを開発中です。現在、このクライアントはアクセストークンを使用してAPIデータを使用しています。私はZeroMQに基づいてWebサービスを構築しないといけませんか?

私たちはさまざまなアプローチを考えていましたが、現在のアプローチは特定のオブジェクトの特定の変更を購読しているクライアントに数秒ごとに単純なHTTP投稿に基づいています(変更が明らかに発生した場合のみ)。

EX:ユーザーが新しいdocを作成し、その特定のユーザーのサブスクリプション(UserUploadDoc)に登録されているすべてのアプリケーションがPOST経由で通知されます。これは実際に実装するのが簡単です。

しかし、私たちはメッセージングサービスを調査し始めました。そして、よくZeroMQはかなり能力があるようです。

私は簡単なメッセージサービス私たちは何かを放送する病院PA、と同様の方法で働いて、それはそれを取得するために、誰かがリスニングを想像することができ、ナースサリー同様

は保育園に電話を持っている、ともサリーの看護師は保育園に来て、彼女だけが完全なメッセージを受け取ります。

私はこのアプローチで完全に間違っていることを確認し、おそらく痛みを伴うHTTPの投稿に固執する必要があります!

+0

これは奇妙な方法ですが、私は今あなたの質問に完全に間違っていることを確認してください –

答えて

7

問題が発生した場合に保証された配信と監査証跡が追加されるため、このシナリオではメッセージキューが有効です。たとえば、特定のクライアントが特定の時間にメッセージを取得できなかったかどうかを調べたり、メッセージキューを巻き戻して再生してクライアントをテストしたりする可能性があります。他の投稿が指摘しているように余分なオーバーヘッドが加わるため、このトレードオフがあなたの特定のケースでは価値があるかどうかのコスト便益分析には本当に下がります。

一般に、何らかの理由でメッセージが届かないと病院で重大な問題が発生した場合は、メッセージブローカーが必要です。 POST経由でプッシュを使用していない場合は、アップデートを取得するまでサーバーのRESTインターフェイスをポーリングし続けるのはクライアントの責任であると思われますので、ユーザーは「更新できません」というメッセージが表示され、 。あなたがZeroMQが維持するのに十分な安さ/安さになることを幸せにしている限り、私はそれを求めています。

4

このシナリオでは、ZeroMQを適応させるのは間違いないと思います。 私はあなたが注意事項を考慮する必要がある要因は、クライアント(すべてのアプリケーションが)代わりに、より標準的なHTTPメソッドの加入者としてZeroMQインターフェイスを統合する必要がある場合、コストは何

  • だと思います。
  • MQブローカは、永続モードなどのメッセージがプロデューサ(送信者)とコンシューマ(受信者)間で正常に配信されるように、メッセージの一時的な格納と管理を提供します。したがって、スペース、時間、管理にかかるコストは増しますが、信頼性は向上します。
  • さらに、HTTPインターフェイスとZeroMQを統合して、追加のプロキシレイヤを使用して、ZeroMQコンシューマと実際のクライアントとの間でやりとりすることができます。たとえば、クライアントがZeroMQコンシューマプロキシにサブスクリプションHTTPメッセージを送信した後、ZeroMQコンシューマプロキシ "サブスクリプト"をZeroMQプロデューサに送信します。 ZeroMQコンシューマプロキシはブロードキャストメッセージを受信しましたが、依然として実際のクライアントにHTTP POSTを送信します。 最終的には、パブリッシャ/サブスクライバモデルなどのメッセージ管理の種類があり、ブロードキャスタとクライアントでは単純なHTTPインターフェイスのままです。

ちょっと考えてください。

3

ZeroMQはサービスを構築するのに最適ですが、システムはいくらか公開されています。 ZeroMQを敵対的な接続に安定させることには大きな努力が払われてきましたが、典型的な信頼性を実現するためには、レイヤーを上に置いたままの作業がまだたくさんありますウェブサーバーが悪い人に直面する可能性があります。また、暗号化と認証の両方にレイヤリングする必要がありますが、どちらも絶対に実行可能ですが、潜在的にはもう少し作業が必要です。

サービスが外部に公開されている場合は、ZeroMQへの翻訳を提供するMongrel2のようなWebSocket(またはJimが提案するHTTP/S)を使用して、 ZMQの内部サービス。

私は棒の間違った終わりを持っていて、サービス自体は公共インターネット上で公開されていないとすれば、私は間違いなくZeroMQに行くでしょう - それはほぼすべて共通して適切なレベルの信頼性を加えるために適用できるシンプルなパターンがいくつかあります(詳細はhttp://zguide.zero.mqのガイドを参照)。

関連する問題