メッセージングミドルウェアよくある質問

等可用性、繰り返し消費電力、伝送の信頼性は、メッセージが失われ

1、カフカ、RabbitMQの、ActiveMQの、 rocketMQ シーン選択と区別使用して
スループットを、スループットのトピック数への影響、適時性、可用性、信頼性、コア機能、利点と欠点が要約されている
ActiveMQの:スループット1万は非常に成熟し、より強力な機能、同社は時折再適用された多数のプロジェクトは、低確率メッセージはますます近年では失われてい少なく、メンテナンスおよび以下の公式コミュニティ、そして実際に主に基づいて、デカップリングとあまり使用して、非同期大規模なスループットのシナリオの中で使用
RabbitMQの:千10スループットはErlangの開発に基づいてサーバーとの関係を持って、低レイテンシー性能が良いですが、また近年では、オープンソースコミュニティがよりアクティブな管理インターフェースを提供し、RabbitMQの複数とのインターネット企業、アーランに基づいてソースコードをよりカスタマイズすることは困難と制御言語、理解していないので、
rocketMQ:単一のスループットの10ワットを、トピックは、よりレベルのトピックのスループットは、より少ない程度に減少し、数百または数千に達することができる、アリの大規模な使用は、比較しますメッセージ100億上の信頼性が毎日処理が開発を容易にするために、コミュニティの維持できるだけMQ複雑なビジネス・シナリオの
カフカ:機能プロファイル シングル、シンプルMQ主要なサポート機能、MSは可用性と信頼性の非常に高いレベルが、リアルタイムで計算ニュース繰り返さ消費を遅らせ、そしてフィールドで収集されたデータを記録することは、大規模な使用です。

中小企業:RabbitMQのは、技術的な強さは、一般的に非常に高い挑戦コミュニティがよりアクティブではありません。
大企業:強力なR&DインフラをrocketMQ
それがコレクションやカフカと他のシーンを記録し、リアルタイムビッグデータフィールドで計算されている場合された業界標準、コミュニティ活動比較的高いとこの分野で世界中でリアルタイムノルムはもちろんのこと、黄色ではないでしょう。


メッセージキューの使用が理由2.メッセージキューの使用シナリオ、
そのようなシステムBシステムAメッセージ、システムは、メッセージキューへの送信のためにのみ責任があるので、異なるシステムがパブリッシュ・サブスクライブ・モデルとの間のデカップリングにより、システム間のデカップリングメッセージ、B単に消費、消費者が心配する必要がないなど、新たなC、D、もし、
突然システムに大量のデータ、ストレージシステムのRPCによって呼び出すと、システムが再生するためにシステムにリンクされる可能性がある、あなたができるので、クリッピング;クリッピングをMQによって行われる、ゆっくりシステムAによって消費される
メッセージ・キューを経由して、システムの複数のシステムC、D、E、Fなど、1つまたは通知メッセージに頼る必要があり、必要としない:誘導の例同期呼び出しのRPCの方法を呼び出します。

短所は:システム全体は、MQがハングアップMQによって引き起こされる問題がハングアップする場合は、システムの複雑さを増す(失われたメッセージ、メッセージシーケンスを、メッセージ送信は、重複メッセージを保証するものではありません)

3、RabbitMQのカフカと利用可能な試験は、高可用性
、クラスタに分散されていない
3つのモードの:スタンドアローンモード、及びミラーモードトランクモード
トランクモード:開始、複数のマシン上の各マシンをインスタンスのRabbitMQの複数を起動します。しかし、あなたが作成したキューは、RabbitMQのインスタンスに置くが、各インスタンスのメタデータの同期キューます。消費者は実際には別の場合は、1つのインスタンスに接続されたときに
インスタンスがどこキューインスタンスからデータを引っ張ってくるように、オーバー。データは、データのリンクされたインスタンスが格納されているキューが失われた場合、データの追加量があまりにも2つのインスタンス間のデータ転送の量が多すぎる場合、このモードは、従って、信頼性の高いモードではなく、
ミラートランクモード:高可用性モードでは、各ノードそこキュー(メタデータとメッセージ内容)に完全な画像であり、それぞれがメッセージをキューに書き込み、メッセージは自動的に内部キューの複数のインスタンスを同期するときに、
欠点:パフォーマンス・オーバーヘッドが大きすぎると、メッセージが同期化される必要がありますすべてのマシン上で、増加したネットワーク帯域幅が得られことは直線的にキューイングマシンのスケールをロードする方法はありません。
道を開く:データの同期を再度、管理コンソール、新しいポリシー(ミラーリングクラスタモード)から、すべてのノードを同期したり、ノードの指定された数にしながら、あなたは要件を指定することができますときは、この戦略を使用してキューを作成します。

配布されていない:単一クラスタノードの完全なストレージ上のデータがあることを意味
カフカの分散
ブローカーカフカプロセスは彼のプロセスの各マシン1で開始され、また、ノードカフカのクラスタであるとみなすことができ、
カフカは、複数のブローカーで各組成物は、ブローカーノードであり、パーティションに分割されるトピックのトピックを作成し、各パーティションは異なるブローカ、データを格納するために、各パーティションの部分に存在してもよい。
カフカ天然分散メッセージキューはトピックでありますデータは、各区画が異なるブローカ上に分散させることができるパーティションの複数に格納されてもよいです。

配布されていないメッセージキューのような実際のRabbitMQのでは、彼がプレーするためにどのように関係なくは、ノードのキューでRabbitMQのデータが下に置かれているのでキューは、クラスタの数、唯一のHAのメカニズムを提供する唯一のメッセージです;
ミラーで完全なデータであり、各クラスタ・ノードは、キューに格納されています。

HAメカニズム:HA-コピーパーティションの存在によるリーダー選挙機構カフカの複数のコピーのコピーの他のコピーがfllowerで、リーダーfllower同期データに同期するデータ、リーダーへのクライアント接続を作成し、
ケース:それはリーダーではない場合、マシンがダウンしているが、この他のマシン上の時間だけでなく、今回fllowerは、カフカが自動的にリーダーが死ぬ感知したら、他のは、リーダーfllowerノードとして選出されます。


再送信は、補足的な政策4.メッセージは、メッセージが(冪等を確保する方法)消費繰り返されないことを保証するためにどのように
、問題のメッセージを繰り返し消費量を表示しますRabbitMQの、rocketMQ、カフカが住んでいたと他の消費者のメッセージング・ミドルウェアを、これは保証すべきではないので、 MQ保証、消費者側は自分自身を約束され、
カフカが繰り返さ消費を生きるために使用される:カフカオフセットの概念があり、各メッセージに書き込まれた後、そのシリアル番号と消費支出データに代わって、オフセットしているだろう
理由:時間の時間になります提出したメッセージの上に自分の消費量を相殺するために、消費者に代わって渡されました。ベースの実装を飼育係、消費者の位置を相殺するために、消費電流を記録するZKを、
消費者はすぐにオフセットを提出する完全な消費データはなく、次の周期の提出のタイミングはオフセットであり、クライアントがハングアップしたり、それが再び最後のスタートの支出から消費を繰り返すことになる消費者の提出に失敗したことを相殺するためにリードを再起動した場合、
溶液(冪等を確保するために):事業の組み合わせ
1)取得データ書き込みライブラリーは、それぞれの主キーに基づいて主キーまたはセキュリティをすることができ またはデータベースの下の最初のチェック(メインライブラリから音符)にデータがフィルタまたは更新するクエリメインライブラリを示唆し;
2)キャッシュまたは分散ロックRedisのコースによる識別は、セット内に直接書かれた場合、すべての後、問題はないだろう、自然の冪等;
消費することが判明し、その後のRedisに記録されていない場合3)シーンの複雑なポイントはRedisのを見つけるために、グローバルに一意の識別子を増加させたメッセージは、メッセージを受信した後、内部に行くれます


複数の消費者はどのように対処する場合には?RabbitMQの中でどのように対処するのですか?

どのようにデータ5. MQシステムを確保するために失われていない、データが劣らもうありません
。ニュース時のプロデューサーは、MQ、MQ自身の喪失、または消費過程における消費者の損失で書かれていません:失われた原因
のニュース:RabbitMQのRabbitMQのに転送されていない失われた、またはRabbitMQのメッセージが受信されているが、まだ問題に保存する時間が浮上していたか、メモリに保存されていなく、ディスクにシリアライズされた、メッセージに対処するための消費者支出のが、ハングアップする時間がありませんでしたさ;消費者が成功を消費していることをRabbitMQの
ソリューション:
生産者は(スループット低下の原因となるブロック)、または非同期確認トランザクションを開くことができます。
キューのキューのメタデータのRabbitMQの作成の最初のステップは、永続的な保証として、それを設定しますシリアライズ;パートII:その持続メッセージを確実にするために、永続deliveyMode = 2であり、メッセージ本文にメッセージを送信するときに、
その唯一のメッセージ本体の永続性を保証するために、一緒にプロデューサ永続性機構ながら機構を確認して?(これは、メモリに保存したり、保存した場合、ハードドライブに保存したメモリに失われますされて完全に回避することはできません)終了後のプロデューサーをお知らせいたします。
消費者の側をAUTOACK機構確認の自動返信をオフ
カフカを:
メーカー:書き込み失敗し、再試行を設定します手動での介入のより多くのn倍の数の場合、最大に設定している場合
、サーバー失われた:パーティション内の同期プロセスのコピーを、リーダーはちょうどメッセージのコピーと同期ハングアップする準備ができて、彼らはコピーを保存したプロデューサー受けていた場合には
解決策を:各パーティションには、少なくとも2つのコピーを持っており、少なくとも1つのコピーがプロデューサーに接続されているすべての、すべてのコピーに書き込ま必要が書き込み成功とみなされる=リーダーに留まり、ACKを設定している必要があります。
消費者側は、データを失った:消費者へのメッセージは、消費者には、自動的にオフセット提出しますが、クライアント・プロセスが異常で、クライアントは消費者を完了したサーバは、クライアントが処理された後のオフセット手動モードをコミット解決します。


6.メッセージの順序を保証する方法(秩序保証されていない場合、プロデューサデータバイナリログに付加および欠失)
シナリオ:1)消費者のRabbitMQの複数のキュー
2)カフカ:トピック、パーティション、消費者マルチスレッドの消費者の使用
のActiveMQのために:あなたが排他的な消費者を使用することができ、かつ消費者がループ電流の内部にある、または排他的な消費者を持っていません。消費者を消費することができるループ電流内部のニュース記事を選択します。
RabbitMQの:キューの複数に分割し、キュー、または唯一の消費者の合計が、消費者と消費者の保管及び流通プロセスに内部キューを使用に対応するキュー、
カフカ:トピック、パーティション、単一スレッドを使用して、消費者は、消費を書き込みます。 N個のメモリ・キュー、およびNと一緒になって、消費者にキュースレッド(それぞれスレッドに対応するサービスIDに基づいてハッシュ)
データは、特定のパーティションシーケンシャルに書き込まれると、プロデューサは、書き込みに時間を指定することができキー、キー関連データが同じパーティションで書かれており、順番になっております;?
複数の消費者や消費者だけのためのキューを構成する方法?


メッセージのバックログがある場合は7、どのように対処するには?(?遅延は、メッセージキューを満了すると、メッセージキューは、数百万のメッセージのバックログで数時間継続対処するための方法をいっぱい質問です?)
分析のバックログの理由:
消費者がハングアップした場合は1)、消費者を再起動しますが、消費者が監視を増やす必要がデータベースのボトルネックのようなデータ記憶例えば、
2)通常の消費者、消費者は、しかし、新しいトピックパーティション10を作成した場合は、トピックに受信した新しいトピックを送信し、次いで、消費者は新しいpatitionを接続するために、元のトピックを変更するためにできるように設けられています。消費;

障害メッセージキュー(有効期限を引き起こす):データが失われた場合、チームのニュース禁止が満了し、プログラムを手動で検索し、それを補うために、プログラムによって失われたデータを記述する必要があります。

図8は、システムメッセージキュー設計する方法
1)カフカ概念を参照することができ、容量およびスループットを増加させる、スケーラブルな急速な拡大をサポートしています。ブローカー・>トピック- >データサブパーティションの各パーティションマシン、ストレージの一部、既存の場合topitc十分なパーティションを増加させるリソース、およびデータ・マイグレーション、機械を高める;
2)データが永続的シーケンシャルライトを永続性、そこにはディスクランダムリードがなく、オーバーヘッドアドレッシング書き込み、および高性能ディスクは、基準カフカための読み書きアイデア;
3)カフカマルチコピー保護メカニズムを使用した高可用性の可用性、リーダーメカニズム
データの4)損失がカフカ0 0データの損失プログラムを使用することができます。


9.どのMQ、そして他の人にも、MQは、どのような長所と短所を比較している、MQ接続はあなたのためのスレッドセーフで、どのようなあなたの会社MQサービスアーキテクチャ


7.高スループットカフカ理由。

8.カフカ差および他のメッセージキュー、カフカどのマスタ - スレーブ同期を実現

9.最終的な一貫性を達成するためにどのようにMQを使用

10.カフカは何の問題も発生していない、どのように解決するために

11. MQ繰り返し消費は冪等を行う方法を、回避する方法、発生する可能性があります

12. MQメッセージは、あなたはどのように対処する有効期限は通常どおり撮影、あなたは有効期限を設定することができるもののメッセージ、どのように対処するレイテンシ


16、カフカ、ActiveMQの、RabbitMQの本質的な違いは何ですか


RabbitMQの:https://www.jianshu.com/p/787d155ff4e1

おすすめ

転載: www.cnblogs.com/gudicao/p/11649628.html