パワーノード RocketMq 最新ノート 第 1 章 RocketMQ の基本操作

1. RocketMQ の概要

MQ====Message Queue
公式 Web サイト: http://rocketmq.apache.org/

RocketMQ は、Alibaba の 2016 MQ ミドルウェアであり、Java 言語で開発されています。RocketMQ は、高可用性の分散クラスタ技術に基づいたオープンソースの分散メッセージ システムです。遅延、信頼性の高いメッセージ発行およびサブスクリプション サービス。同時に、非同期通信のデカップリング、エンタープライズ ソリューション、金融決済、電気通信、電子商取引、エクスプレス ロジスティクス、広告マーケティング、ソーシャル ネットワーキング、インスタント メッセージング、モバイル アプリケーション、モバイル ゲーム、ビデオ、モノのインターネット、自動車ネットワークなど
次のような特徴があります。

  1. 厳密なメッセージ順序を保証できる
  2. リッチメッセージプルモードを提供する
  3. 効率的な加入者水平拡張機能
  4. リアルタイムメッセージ購読メカニズム
  5. 10億レベルのメッセージ蓄積機能

2. MQ を使用する理由

1. システムのデカップリングを実現するには、新しいモジュールが導入されたときに、コードの変更を最小限に抑えることができます。デカップリング
2. バックエンド システムが過剰にならずに独自のスループットに従って消費できるように、プロセス バッファー プールをセットアップします。ピーク シェービング、電流制限
3、強い依存関係と弱い依存関係の結合により、重要でない呼び出しリンクの操作を非同期化し、システム全体のスループットを向上させることができます。非同期にすることもできます。


Mq の役割 ピークシェービングと電流制限 非同期デカップリング


2.1 定義

ミドルウェア (キャッシュ ミドルウェア redis memcache データベース ミドルウェア mycat canal メッセージ ミドルウェア mq)
メッセージ指向ミドルウェア(メッセージ指向ミドルウェア) MOM は上記の問題を十分に解決できます。これは、プラットフォームに依存しない (クロスプラットフォーム) データ交換のための効率的で信頼性の高いメッセージ配信メカニズムの
使用と、データ通信に基づく分散システムの統合を指します。メッセージ パッシング モデルとメッセージ キューイング モデルを提供することにより、分散環境でアプリケーションのデカップリング、エラスティック スケーリング、冗長ストレージ、トラフィック ピーク シェービング、非同期通信、データ同期などを提供します。

一般的なプロセス
送信者はメッセージをメッセージ サーバー [MQ] に送信し、メッセージ サーバーはメッセージをいくつかのキュー/トピックに保存します。必要に応じて、メッセージ サーバーはメッセージを受信者に転送します。このプロセスでは、送信と受信は非同期です。つまり、送信を待つ必要がなく、送信者と受信者のライフサイクルの間に必要な関係はありません。パブリッシュ パブ/サブスクライブ サブ モードでは、1-対多の通信も可能で、メッセージに複数の受信者が含まれることも可能です [WeChat の購読番号は次のとおりです]

2.2 特徴

2.2.1 非同期処理モード

メッセージ送信者は、応答を待たずにメッセージを送信できます。メッセージ送信者は仮想チャネル (トピックまたはキュー) にメッセージを送信し、
メッセージ受信者はチャネルをサブスクライブするかリッスンします。メッセージは最終的に 1 人以上のメッセージ受信者に転送される場合があり、そのいずれもメッセージ送信者に応答する必要はありません。プロセス全体は非同期です。
ケース:
つまり、あるシステムが別のシステムと通信するときに、システム A が処理のためにメッセージをシステム B に送信したいが、システム A がシステム B がそれをどのように処理するか、またはメッセージが適切に処理されたかどうかに注意を払わない場合、したがって、システム A はメッセージを MQ に送信し、メッセージの「生死」を無視し、システム B がそのメッセージを MQ から消費して処理します。それをどうするか、処理したかどうか、いつ処理するかということについては、すべてシステムBの話であり、システムAには関係ありません。

このような通信方式は、いわゆる「非同期」通信方式です。システム A の場合、メッセージが MQ に送信される限り、システム B はそれを非同期で処理します。システム A は、システム B の送信が完了するまで「同期」で待つことはできません。 。これにはどのような利点があるのでしょうか? デカップリング

2.2.2 アプリケーション システムの分離

送信者と受信者はお互いを知る必要はありません。
送信者と受信者が同時にオンラインである必要がないことを確認するだけで済みます。

2.2.3 実際のビジネス

3. 各種MQ製品の比較

4. RocketMQの重要な概念【ポイント】

プロデューサー: メッセージの送信者、プロデューサー、例: 送信者
Consumer: メッセージの受信者、消費者、例: 受信者
Broker: メッセージを一時的に保存および送信するチャネル、例: Express
NameServer: 管理ブローカー、例: それぞれ 運送会社の管理組織は同等ブローカーの情報を保持するブローカーの登録センターへの送信
キュー: キュー、メッセージが保存される場所。ブローカーには複数のキューが存在する可能性があります。
トピック: トピック、メッセージの分類
ProducerGroup: プロデューサー グループ
ConsumerGroup: Consumer Group、複数のコンシューマ グループがトピックのメッセージを同時に消費できます
。メッセージ送信のプロセスでは、Producer が NameServer に問い合わせ、NameServer がブローカを割り当て、その後 Consumer も NameServer にメッセージを取得するように依頼します。特定のブローカーにアクセスし、メッセージを消費します

5. 生産と消費の理解【ポイント】

6.RocketMQのインストール

mq の基本的な概念と役割を理解したら、Linux で推奨されている rocketmq のインストールを開始します。

6.1 RocketMQ をダウンロードする

ダウンロード アドレス: https://rocketmq.apache.org/dowloading/releases/
バージョンの選択に注意してください。ここでは、後で使用する alibaba に対応するバージョン 4.9.2 を選択します。

ダウンロード アドレス:
https://archive.apache .org/dist/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip

6.2 アップロードサーバー

ルートディレクトリにフォルダーを作成します

mkdir ロケット mq

ダウンロードした圧縮パッケージを Alibaba Cloud サーバーまたは仮想マシンにアップロードします

6.3 減圧

rocketmq-all-4.9.2-bin-release.zip を解凍します。

サーバーに unzip コマンドがない場合は、ダウンロードしてインストールします。

yumインストール解凍

ディレクトリ分析

ベンチマーク: いくつかのパフォーマンス テスト スクリプトが含まれています;
Bin: 実行可能ファイル ディレクトリ;
Conf: 構成ファイル ディレクトリ;
Lib: サードパーティの依存関係;
LICENSE: 認証情報;
NOTICE: バージョンの発表;

6.4 環境変数の構成

vim /etc/profile

ファイルの最後に追加

エクスポート NAMESRV_ADDR= Aliyun パブリック ネットワーク IP : 9876

6.5 nameServer の実行スクリプトを変更する

bin ディレクトリに入り、runserver.sh ファイルを変更し、71 行目と 76 行目の Xms と Xmx をより小さいサイズに変更します。

vim runserver.sh


保存して終了

6.6 ブローカーの実行スクリプトを変更する

bin ディレクトリに入り、runbroker.sh ファイルを変更し、67 行目を変更し、

保存して終了します。

6.7 ブローカー構成ファイルの変更

conf ディレクトリに入り、broker.conf ファイルを変更します。

| ブローカークラスター名 = DefaultCluster
ブローカー名 = ブローカー-a
ブローカー ID = 0
deleteWhen = 04
fileReservedTime = 48
ブローカーロール = ASYNC_MASTER
flashDiskType = ASYNC_FLUSH
namesrvAddr=localhost:9876
autoCreateTopicEnable=true

BrokerIP1=Alibaba Cloud パブリック ネットワーク IP

namesrvAddrを説明するパラメータを追加します
。nameSrv とブローカーが同じサーバー内にあるため、nameSrv アドレスを localhost に書き込むことができます。
autoCreateTopicEnable: トピックを自動的に作成します。それ以外の場合は手動で作成する必要があります
。 BrokerIP1: ブローカーにはパブリック ネットワーク IP も必要です (指定されていない場合)。は Alibaba Cloud の内部ネットワーク アドレスです。これ以上を使用してローカルに接続することはできません。

6.8 開始

まず、ログを保存するためにインストール ディレクトリにログ フォルダーを作成します。
mkdir ログ

一度に 2 つのコマンドを実行します。
nameSrv を開始します。

nohup sh bin/mqnamesrv > ./logs/namesrv.log &

ブローカーを開始します。ここで、-c は指定された構成ファイルです。

nohup sh bin/mqbroker -c conf/broker.conf > ./logs/broker.log &

起動結果の表示

6.9 RocketMQ コンソールのインストール RocketMQ-Console

Rocketmq コンソールは MQ メッセージ送信を視覚化できます。
古いバージョンのソース コードは rocketmq-external の rocketmq-console であり、新しいバージョンはダッシュボード
URL: [https://github.com/apache/rocketmq-dashboard
ダウンロード アドレス:
https://github. com/apache /rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-1.0.0.zip をダウンロード後
、解凍して以下のディレクトリで実行します。

mvn clean package -Dmaven.test.skip=true


jar パッケージをサーバーにアップロードして

実行します

nohup java -jar ./rocketmq-dashboard-1.0.0.jar rocketmq.config.namesrvAddr=127.0.0.1:9876 > ./rocketmq-4.9.3/logs/dashboard.log &

コマンド展開: –server.port は実行ポートを指定します
–rocketmq.config.namesrvAddr=127.0.0.1:9876 は namesrv アドレスを指定します
アクセス: http://localhost:8001
実行アクセス ポートは 8001 です。公式Webサイトにアクセスしてパックすると、デフォルトのポートは8080です

7. RocketMQ インストール用の Docker

7.1 RockerMQ に必要なイメージをダウンロードする

| ドッカープル rocketmqinc/rocketmq

docker pull styletang/rocketmq-console-ng

7.2 NameServer サービスの開始

7.2.1 NameServer データストレージパスの作成

mkdir -p /home/rocketmq/data/namesrv/logs /home/rocketmq/data/namesrv/store

7.2.2 NameServerコンテナの起動

docker run -d --name rmqnamesrv -p 9876:9876 -v /home/rocketmq/data/namesrv/logs:/root/logs -v /home/rocketmq/data/namesrv/store:/root/store -e “ MAX_POSSIBLE_HEAP=100000000” rocketmqinc/rocketmq sh mqnamesrv

7.3 ブローカーサービスの開始

7.3.1 ブローカーデータストレージパスの作成

mkdir -p /home/rocketmq/data/broker/logs /home/rocketmq/data/broker/store

7.3.2 conf 設定ファイルのディレクトリの作成

mkdir /home/rocketmq/conf

7.3.3 設定ファイルディレクトリにbroker.conf設定ファイルを作成する

# 属するクラスターの名前。ノードが多数ある場合は、複数のクラスターを構成できます。 _brokerClusterName = DefaultCluster #ブローカー名、マスターとスレーブは同じ名前を使用し、マスターとスレーブの関係を示します _brokerName = Broker-a_#0 の意味マスター、0 より大きい場合は異なることを意味します SLAVE_brokerId = 0_#メッセージを削除する時刻を示します。デフォルトは午前 4 時です。 _deleteWhen = 04_#メッセージをディスク上に保持する時間の長さ。単位は時間です。 _fileReservedTime = 48_#値は 3 つあります: SYNC_MASTER、ASYNC_MASTER、SLAVE; 同期 そして非同期はマスターとスレーブの間でデータを同期するメカニズムを意味します; BrokerRole = ASYNC_MASTER #フラッシュ戦略、値は次のとおりです: ASYNC_FLUSH、SYNC_FLUSH は同期および非同期のディスク フラッシュを意味します。ディスクへの書き込み後、SYNC_FLUSH メッセージは成功ステータスに戻ります。ASYNC_FLUSH は必要ありません。flushDiskType = ASYNC_FLUSH # ブローカー ノードが配置されているサーバーの IP アドレスを設定します。 _brokerIP1 =サーバーの外部ネットワーク IP

7.3.4 Brokerコンテナの起動

docker run -d --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 -v /home/rocketmq/data/broker/logs:/root/logs -v /home/rocketmq/data/ Broker/store:/root/store -v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --privileged=true -e “NAMESRV_ADDR=namesrv:9876” - e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

7.4 コンソールの起動

| docker run -d --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=外部ネットワーク アドレス: 9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false \

-Duser.timezone='アジア/上海'" -v /etc/localtime:/etc/localtime -p 9999:8080 styletang/rocketmq-console-ng

通常起動後の 7.5 docker ps

7.6 コンソールへのアクセス

http://サーバーの外部ネットワークIP:9999/

おすすめ

転載: blog.csdn.net/f5465245/article/details/130601991