2016-12-12 12 views
1

複数のリモートサーバーにRailsアプリケーションをインストールしました。 Railsアプリケーションは金融取引を生成し、すべてのリモートサーバーがこのメタデータをリレーショナルDBに格納されている中央ハブに送信したいと考えています。トランザクションに関する他の処理タスクがあるかもしれません。これらのサーバーは私のコントロール下にないので、インターネットへの常時接続を保証することはできません。彼らは毎日少なくとも2時間はインターネットに接続されます。RabbitMQを使用してリモートサーバートランザクションを同期する

このようなアーキテクチャにはRabbitMQは便利ですか? Exchangeとキューは、リモートサーバー(Producer Railsアプリケーションと一緒に)にインストールされるでしょうか?各リモートサーバーごとに1つのコンシューマサービスを用意するか、すべてのリモートサーバー/キューに対して1つの中央コンシューマサービスを用意することはできますか?私はRabbitMQのの世界では、このようなnoobのだ以来

ボーナス質問:

  1. 私は消費者がキューからデータを消費することができるように、リモートマシン上で開く必要があるだろうかポート?
  2. ダイレクトエクスチェンジを使用します。
  3. 消費される前にキューに蓄積されるメッセージの数はいくつですか?数日(最悪のシナリオ)の間にリモートサーバーがインターネットに接続されないと、物事がひどくなる可能性はありますか?
  4. によりシステムの多額の切断性質

RabbitMQ architecture

答えて

1

(AMQPシステムの典型的な使用ではない、私は考えていない)、そしてあなただけプッシュする必要があるという事実AMQP/RabbitMQ全体をスキップしてローカルデータベースに直接書き込んで、スケジュールされたタスクを実行して、そのデータを夜間に中央サーバーにプッシュするほうがよいのではないかと思います。

RabbitMQは、メッセージを格納する固有の機能を持つメッセージ仲介サービスであり、メッセージストレージサービスではありません。サービスの主な目的は、パブリッシングシステムからメッセージを切り離し、通常はリア​​ルタイムでメッセージを送信することです。一方、データベースはですが、ストレージシステムはですが、非リアルタイムでデータをプッシュするための豊富なオプションがあります。言ったことで

、ここでは、この文脈でのRabbitMQに関するいくつかの考えです:

まず、いくつかのコンテキストが役立つだろう:私たちは、サーバが処理し、プッシュしたいと思っているどのように多くの取引日のあなたのレール見当がつかない。 1日1回? 1日に100万?

キュー内でバックログに記録されたメッセージについて:RabbitMQは(明らかに)スケーラビリティがあり、メッセージサービス自体に関しては問題ではないはずです(キューからの管理方法についての情報はhttp://www.rabbitmq.com/blog/2011/10/27/performance-of-queues-when-less-is-more/です)

使用可能なメモリとハードドライブの空き容量(正しく設定されている場合)は、キューにロードできるメッセージ数の制限要因になります。消費者のセットアップについて

https://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/

https://www.rabbitmq.com/maxlength.html

https://blog.pivotal.io/pivotal/products/rabbitmq-hits-one-million-messages-per-second-on-google-compute-engine

、私はあなたが様々なRabbitMQのサーバに接続する中央サービスを持っていませんでした何らかの理由が表示されません。別々の接続とチャンネルを実行する必要があります(受信メッセージをラウンドロビンするのに役立ついくつかのインスタンスを実行することもできます)。

交換タイプについて:これは正しいと思われます。はい。

+0

ご返信ありがとうございます。私がRabbitMQとデータベースを考えていたもう一つの理由は、個人的な好みのためでした。私がデータベースの同期に入ると、データベースの専門家になる必要があります。私はアプリケーションエンジニアであり、むしろ私はアプリケーションドメインに属するRabbitMQを知っていました。また、私はデータをもっとコントロールできると思っています。おそらく、私はそれを処理しているうちにその一部を破るでしょう。とにかく、私は1日約2万件のトランザクションを見ています...メタデータは1トランザクションあたり1kbの範囲にあります。 –

+0

これは、データベースの非常に簡単な使用です。志望するアプリケーションエンジニアとしては、少なくともデータベースの経験は少ししかありません(大多数のアプリケーションでデータベースを使用していないのですか?)。あなたが個人的な好みのために間違った選択をした場合、あなたは間違った選択をしています。繰り返しますが、私はRabbitMQのアプローチを推奨します(トランザクションのカウントとペイロードが表示されるようになりました)。 – jleach

関連する問題