少しの背景。サービス指向アーキテクチャ - AMQPまたはHTTP
非常に大きなモノリシックなDjangoアプリケーションです。すべてのコンポーネントが同じデータベースを使用します。残りの部分に影響を与えずにシステムの一部を個別にアップグレードできるように、サービスを分離する必要があります。
私たちはRabbitMQをCeleryのブローカーとして使用しています。 RESTインターフェースを使用して
- HTTPサービス:
今、私たちは2つのオプションがあります。イベントループサービスへ
- AMQPを超えるJSONRPC
それは、彼らが精通しているが、私はAMQP上でRPCを使用することの利点は、はるかにそれを上回る考えるものだから私のチームは、HTTPに傾いています。
AMQPは、メッセージ配信を保証しながら、ロードバランシングと高可用性を簡単に追加できる機能を提供します。 HTTPで私たちはRESTインタフェースで動作するようにクライアントのHTTPラッパーを作成する必要がありに対し
、我々は、ロードバランサに入れて、私ができるなどHA AMQPで
を持っているために、そのインフラストラクチャを設定する必要がちょうどサービスの別のインスタンスを生成すると、他のインスタンスと同じキューに接続し、bam、HA、およびロードバランシングに接続します。
私はAMQPに関する私の考えで何かを見逃していますか?一般 - まず
私たちはHTTP/RESTに行くことになりました。私は本当に私たちのアーキテクチャにうまく収まるので、AMQPルートに行きたいと思っていましたが、私のチームは新しいものを試してみたいと思っていませんでした。 AMQPとRPCの代わりにHTTPを使用して、還元剤と高可用性SOAシステムを開発するには、はるかに多くの作業が必要です。 – jreid42
@pinepain AMQPを使用すると、実際にHTTPを使用していない場合(リクエスト/レスポンス方式で作業中)の宛先にメッセージをプッシュすることができるということが1つのことだと思いますが(修正してください) – rayman
@rayman HTTPとAMQPは私はそのような基準をその比較に使用したくないと思います。 – pinepain