インタビューはRocketMQにこの記事を読むように頼んだ十分です

1. RocketMQの実装原理

ここに画像の説明を挿入

2.なぜZkなしでNameServerを書くのですか?

1. NameServerは自分で作成するため、拡張と分散に便利です。NameServerがあれば、登録センター環境全体を使用できます
。2. Zkの選択は、使用する前にメカニズムの半分以上を満たす必要があります

3つ、4つのクラスターメソッド:

1.単一のマスターノード:負荷圧力が非常に大きく、ダウンするとデータが失われる可能性があります
2.複数のマスターステージ:共有ストレージデータですが、スレーブノードがない場合、マシンがダウンするとデータが失われる可能性があります
3、複数のマスター複数のスレーブノードがある場合、同期形式はマスタースレーブデータ同期を実現し、プロデューサーはメッセージをマスターに返し、それをスタンバイブローカーに同期してからackを返し、メッセージの配信が成功したことを確認します
。4.複数のマスターおよび複数のスレーブノード、非同期形式はマスタースレーブデータの同期を実現します。、プロデューサーはメッセージをマスターに格納し、ackを返してメッセージが正常に配信されたことを確認し、スタンバイブローカーに非同期で同期します。これは非常に効率的ですが、データが失われる可能性があります

4.ブローカーを拡張すると、ブローカーの使用に影響がありますか?削減できますか?

いいえ、プロデューサーはNameServerに登録されているノードの数をポーリングすることでデータストレージを実現するため、ノードの数は書き込まれません

減らすことはできますが、ブローカー内のメッセージを消費する必要があることが前提です

第5に、RocketMQとKafkaの違い

RocketMQ カフカ
登録センター 飼育係 ネームサーバー
ブローカ 論理的な概念、1つのブローカーは複数のマスターの組み合わせに等しい 物理的な概念、ブローカーは
取引ニュース 応援
順次メッセージ 応援 Brockerは、順次メッセージを達成するためのコンシューマーに対応します

6.スタンドアロンバージョンでRocketMQのスループットを向上させる方法を教えてください。

キューとコンシューマーのみを追加する必要がある

分散トランザクションを解決するためのRocketmqのコアアイデアである7つ

1.プロデューサーはブローカー(MQサーバー側)にディスパッチメッセージをセミメッセージとして送信します。このメッセージはコンシューマーが消費することはできません。
2.ローカルトランザクションを実行するときに、ローカル実行トランザクションの結果をBrokerに送信またはロールバックします。3
.送信された場合、Broker がローカルトランザクションの結果を取得する場合、ローカルトランザクションの場合、ハーフメッセージがコンシューマに消費されるように設定します。場合は、メッセージが半ブローカーから削除され、失敗した
私たちのローカル・トランザクションは、我々が主導権ブローカータイマー(デフォルト60秒)クエリローカルトランザクションの結果になります、ブローカーのこの時間は、私たちに知らせるためにタイムリーに得られなかった場合は4.
5。ローカルトランザクションの結果は、実際にはコールバックメソッドであり、独自のビジネスシナリオに従ってローカルトランザクションの結果をカプセル化します。

現時点では、ローカルトランザクションは手動トランザクションを使用する必要があり、注釈が付いているため、トランザクションの制御は容易ではありません。

8、RabbitMQは分散トランザクションの問題の欠点を解決します

RabbitMQは分散トランザクションの問題を解決します。補充キューも一時停止されている場合、注文データは失われる可能性がありますが、注文は正常に発送されるため、手動で補正する必要があります。

分散トランザクションを解決するための核となるアイデア、9

1.最終的な整合性
2.最初のトランザクションの成功を保証する

10、分散トランザクションの背景

rpcは、リモートで複数の異なるサービス間の通信を呼び出して、データの一貫性を確保します。複数のデータソースがあり、各データソースのトランザクションは互いに影響しません。

11.その他

RocketMQスタンドアロンバージョンは、デフォルトで、トピック内で4つのキューに分割され、目的は高スループットです。

ブローカーにはトピックが含まれ、トピックにはキューが含まれます

Kafkaにはコピーバックアップがあります

Kafkaはパーティションであり、ブローカーは複数のパーティションを
備えていますRocketMQはキューであり、ブローカーは複数のキューを備えています

RocketMQのキューの数は、コンシューマの数と同じである必要があります

3つのmqは順次メッセージをどのように実装しますか?
それらはどのようにクラスター化されていますか?
lcnはメンテナンスされなくなり、主にシータを使用するようになりました

RocketMQは
、Java言語で記述されたdouble 11のテストを経験しています。ソースコードが簡単に拡張および維持できることを理解している
RocketMQは、kafkaのアップグレードです。

9876はNameServerのデフォルトのポート番号です

プロデューサーはグループ化する必要があります。グループ化しないと、エラーが報告されます

コンシューマーが同じグループに属している場合、1人のコンシューマーのみが同じメッセージを消費します

RocketMQの機能
1.トランザクションメッセージの
サポート2.シーケンシャルメッセージのサポート
3.コンシューマーはタグフィルタリングをサポートして帯域幅の送信を削減
4. Java言語の記述、拡張と保守が容易
5. RocketMQはダブル11のテストを経験

NameServer:サービスの登録と検出のためのeurekaと同様に、プロデューサー、コンシューマー、トピックの情報はすべてNameServerに格納されます。分散型。動的認識を実現し、ダウンタイムを回避し、アドレスを変更します
ブローカー:MQサーバー
プロデューサー:プロデューサー
コンシューマー:コンシューマー

brokerid = 0スレーブノードとして> 0マスタノードである
装置は、支配的な変更を手動なります

52のオリジナル記事を公開 Likes2 Visits 1863

おすすめ

転載: blog.csdn.net/qq_42972645/article/details/104771007