質問

なぜRedisのためのイング?

私の印象でRedisすることが可能で候補を実装するための待ち行列システム。これまでしてきました当社のMySQLデータベースのポーリング、RabbitMQ.とRabbitMQしていましたので多くの問題-クライアントライブラリによって作成されたものでありデバイスいたしませんへの投資も多くのデベロッパーによる開発型の時間に固定し、別の複数のサーバーの管理コンソール等ですが、こうした中で、少なくともまだ把握のためのミリ秒または真剣に進性能であり、システムとしては建築を支えるキュートしても良いです。

大丈夫、その背景になります。基本的に私は非常にクラシック、シンプルキュールモデル●複数の生産者の生産作業や消費者の消費、生産者と消費者に必要な規模ります。ので、ナイーブ PUBSUB ない すべての 契約者が消費するか、していきたい 一つ ご契約者を受けます。最初のパスのように見えるように私 BRPOPLPUSH は、インテリジェントデザイン。

使用できまBRPOPLPUSH?

基本デザイン BRPOPLPUSH はい仕事のキューおよび進捗状況のキューに挿入しますが消費者に受け作業で原子的に進の進捗をキューに、完成時には、作業で LREM'sです。こblackholingの場合はお客様の金型、監視か言えばいい問題がある場合は消費者には長い時間がかかる業務を行うことに加え、語りがある場合大量の事ができます。

を確実なものにします

  • 仕事はちょうど一消費者
  • 作風は、進展のキューのできなblackhole場合は消費者

難点

  • このような不思議のデザインがその場で発音を確認することがないを実際に利用し PUBSUB からといっていいのかもしれないかもブログの投稿つ待ち行列の上Redis。ったい何かが足りないはずである。にんに使用 PUBSUB とな作業を回は、単純にpush通知が届いたので、消費者を非ブロック-ly RPOPLPUSH.
  • することはできない要求以上の作品時間であるかのような性能の問題です。な巨大である当社の状況ですが、むしろ当然というこの操作した設計にはなっておりませんので高スループットはこの状況
  • 短: 私は足りなか?

またの追加node.js タグのための言語私は主に扱う。ノードを提供する場合があり一部の起の実施、シングル-ネジ切り付きnonblocking自然がさらに使いのノード-redis図書館とソリューションすべき感を強みと弱みました。

役に立ちましたか?

解決

を利用する場合はRedisメッセージキュー Node.js びんの使用のためのモジュールとしてみるのも良いでしょう RSMQ のRedis簡単なメッセージキューのノードです。ではありませんでした当時のことだが、現在は実行可能なオプションです。

したい場合は、実際に の実施 キューに自分自身で目におうかがいしいソースのRSMQでわずか20画面のコードは何を使います。

参照:

他のヒント

思いが難しい文書です。

どのような取り扱いは再接続の論理によるものか。

これはハードの問題、特に問題を設計-実行するメッセージキューに挿入しますメッセージできるキューのどこかが消費者はオフラインで簡単にパブ-subは強いとはいえないが、消費者直に聞きます。 ブロックpops困難状態の維持があることから、これらの非べを聴状態.聴くべきすべ運用、取り扱う場合には切断に関しては、ブロックpopには、喜びを考える非常に硬いかどうかについて切断が起こった直後のオペレーションが成功したまたは直前の操作に失敗しました。おにくだいすきを取り戻すでしょうが望ましくない。

さらに、リスニング操作できる とが可能です。 理想的には持っていることがありこれらの特性:

  • 試聴するべき等です。
  • 消費者が 常に リスニング、対側の論理では処理以外の聞き取りの論理のコードです。RabbitMQカプセル化してこのように消費者行きのunackedメッセージができています。
    特に行ったのと、貧しいデザインを再入力ブロッキングさいたまスーパーアリ偶発成功の融脆化に必要な考えます。

後ほど現在決定している奨励し、Redis PUBSUB+RPOPLPUSHます。この分離通知の作品から消費の、ユーグレ率、クリーンを聞きます。 のPUBSUBは責任者に通知す。 原子の自然のRPOPLPUSHを担う消費は、委託作業を正確に一人です。最初にこのソリューションが不必要に複雑に比べてブロックpop、その合併症は不要ですので、で解く問題です。

しかしこのソリューションな些細な:

  • 消費者にも要チェックのために作業してもう一度接続してください。
  • 消費者がいる世論調査のための新しい仕事がとにかく、冗長化.の調査を実際に成功すると警告すべき排出されることだけが起こると、消費のPUBSUBの世論調査にRPOPLPUSH.そのため多くの世論調査で成功を示すこと破損予約制です。

なお、PUBSUB/RPOPLPUSHデザインも、スケーリングです。 消費者を受ける軽量化通知 メッセージが、これは不必要なボトルネックです。思を採用することも可能ですチャネルザ-シャーのものではないだろうか難しいデザインを。

その最大の理由を使用RabbitMQ上Redisは故障シナリオ、クラスタリング.

この記事でも説明していくことで、私だけのリンクを提供する:

https://aphyr.com/posts/283-jepsen-redis

Redisセンチネルのほか、ごく最近ではredisクラスタリングできない数多く取り扱基本的な故障シナリオをもっているので悪選択します。

RabbitMQ独自の問題だれでも固体の産生がメッセージキューに挿入します

こちらではの写もしくは:

https://aphyr.com/posts/315-jepsen-rabbitmq

見てるときにキャップtheorum(一貫性、可用性、仕切り取り扱い)できるだけお選び2の3.しての活用RMQのCPの整合性のとれた仕切り取り扱い)当社のメッセージを負荷した場合はできませんので、できないのではないで終了です。するための本質を見失わないようメッセージを使用していま無視するために、パーティションの取り扱いのための本質を見失わないようメッセージ重複を扱うことができて、ソースを管理すUUID.

ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top