RocketMQ for ApsaraMQ の安全停止機能を使用すると、クライアントの突然の切断によって発生するメッセージの損失やその他の問題を効果的に防ぐことができます。 この機能は、業務継続性と可用性を確保するのに役立ちます。
機能概要
安全停止は、O&M シナリオにおけるブローカーの信頼性を向上させるために RocketMQ for ApsaraMQ によって導入されたコア機能です。 複数の保護メカニズムにより、この機能は、クライアントエラーやメッセージ損失など、クライアントの突然の切断によって発生する問題を防ぎ、業務継続性と可用性を確保するのに役立ちます。
保護メカニズム
ノードへの書き込み操作の禁止
ストレージノードを再起動する前に、ブローカーは一時的にノードへの書き込み操作を禁止します。新しいメッセージが書き込まれなくなるまで、この状態が維持されます。 これにより、クライアントから既に送信されたメッセージが適切に保存されます。
接続の終了
RocketMQ for ApsaraMQ ブローカーは、HTTP/2 で定義されている GOAWAY フレームを使用して、接続の安全停止を開始したり、クライアントに接続の終了が差し迫っていることを通知したりします。 このメカニズムは、接続終了時のブローカーとクライアント間の調整を支援し、不完全なリクエストが突然中断されるのを防ぎ、システムの安定性を確保します。
効果
プロデューサー: プロデューサーによって送信されたすべてのリクエストは正常に処理されます。
コンシューマー:
ほとんどのメッセージは正常に消費されます。
まれに、再起動中のストレージノードに蓄積された少数のメッセージが、オフセットのコミット失敗のために再配信されます。
クライアントバージョンの要件
安全停止を正常に使用するには、クライアント SDK が次のバージョン要件を満たしている必要があります。
プログラミング言語 | 最小サポートバージョン | 参照 |
Java (gRPC プロトコル) | 5.0.7 | |
Java (Remoting プロトコル) | 5.3.1 | |
Go | 5.1.0-rc.1 | |
Python | 5.0.4 | |
C++ | 5.0.2 | |
C# | 5.1.0 |