RocketMQ 原則深さ:
まず、定義:
RocketMQは、分散メッセージングミドルウェア・キューモデルは、次のコンポーネントがあります:
図1に示すように、ネームサーバー:ほとんどのノードの状態の間には情報の同期、クラスタは、ノードを展開することができます
2、ブローカーは:であるRocketMQのコア構成要素は、軽量を通してトピックメッセージストアキューメカニズムを維持するために、ブローカは、メッセージのサポートプッシュとプルモード。千億レベルのメッセージの蓄積容量をサポートしています
3、プロデューサー:メッセージプロデューサ、およびネームサーバ通信得るトピック経路情報を、およびネームサーバは、長い接続を維持し、生産者の全てと関連するブローカ長い接続を維持します
図4に示すように、消費者:消費者、および単一コンシューマ・ネームサーバ長い接続を保持し、ポーリングトピックの設定情報に従ってトピック経路とブローカ長い接続を維持します
二つ、ブローカクラスタのアプローチ
1、シングルマスターモード:この方法のリスクで、一度ブローカの再起動やダウンタイムが全体のサービスになりますオンライン環境を使用することは推奨されません、使用できません。
図2に示すように、マルチマスタモード:なしのクラスタスレーブ、すべてのマスター、例えば:3 番目のマスター
長所:簡単な構成、単一のマスターディスクとして構成されたダウンやアプリケーションを再起動メンテナンスには影響しません、RAID10のマシンのダウンタイム回復不能な状況は、であっても、時間、RAID10 ディスクは非常に信頼性の高い欠け、メッセージが失われない(非同期ブラシディスクメッセージの数が少ない、ブラシプレートは、同期を失うことはありません)。最高のパフォーマンス。
短所:単一のマシンがダウンしている間に、メッセージがマシンを復元するためにサブスクライブすることはできません前に、マシンが消費されていない、リアルタイムのメッセージが影響を受けることになります。
3、マルチマスターマルチスレーブモード、非同期レプリケーション
各マスター配置スレーブ、複数のマスター・スレーブ、HA 非同期複製モード、ミリ秒単位の主遅延でショートメッセージを。
長所:ディスクが破損した場合でも、メッセージは非常に少ないが失われ、そしてので、リアルタイムのメッセージは、影響を受けることはありませんマスターのダウンタイムの後、消費者から引き続き使用できるスレーブこのプロセスはアプリケーションに対して透過的で、消費。人間の介入なし。マルチでのパフォーマンスのマスターは、ほぼ同じパターンです。
欠点:マスターダウンタイム、ディスクの損傷は、少量の情報を失いました。
図4に示すように、マルチマスターマルチスレーブ同期デュアルライト
各マスターは配置されたスレーブ、複数のマスタ・スレーブ、HA 、同期デュアル書き込みモードをスタンバイに成功、成功がアプリケーションに返さ書き込み。
利点:データ・サービスは、単一のポイントを持っていない、マスター、遅滞なくメッセージをダウン下、サービスの可用性とデータの可用性が非常に高く、
短所:非同期レプリケーションモードよりも若干低いパフォーマンス、低およそ 10%かそこら、単一のメッセージを送信するためにRT わずかに高いです。一次電流がダウンした後、バックアップ・マシンが自動的にホストに切り替わりません、その後の自動切替機能をサポートします。
三、RocketMQのチャート:
ピクチャ参照:
四、RocketMQのソースコード解析:
1、MQのモジュール:
Rocketmq-namesrv:对应NameServer服务实例,一些事时序图: