背景Helloは、二輪旅行(Hello Bikes、Hello電動アシスト自転車、Hello電気自動車、Xiaoha Battery Exchange)と四輪旅行(Helloヒッチハイク、全ネットワーク配車サービス、Helloタクシー)を含む総合的なモバイル旅行プラットフォームへと進化し、ホテルや店内共同購入など、多くの地域生活エコシステムを模索しています。 会社の事業が成長し続けるにつれて、トラフィックも増加しています。生産現場での重大な事故の多くは、突然のトラフィックの急増によって引き起こされることが多いことがわかりました。したがって、トラフィックを管理および保護し、システムの高可用性を確保することが特に重要です。 この記事では、メッセージ トラフィックとマイクロサービス呼び出しのガバナンスにおける Hello の落とし穴と蓄積された経験を共有します。 ガバナンスについて話しましょう始める前に、ガバナンスについて話しましょう。私の個人的な理解は次のとおりです。 ガバナンスは何を行っているのでしょうか?
何が十分ではないのかを知りたいですか?
それが常に良いものかどうかをまだ知る必要がありますか?
状況が悪いときに、どうすれば状況を改善できるでしょうか?
目次
背景裸のウサギMQ 同社は以前、RabbitMQ を使用していました。 RabbitMQ を使用する際の問題点は次のとおりです。多くの事故は、RabbitMQ クラスターの現在の制限によって引き起こされました。
裸のサービス かつて、複数の企業が 1 つのデータベースを共有していたときに障害が発生しました。夕方のラッシュアワー時にトラフィックが急増し、データベースがダウンしました。
考え:メッセージとサービスの両方に包括的なガバナンス対策が必要 分散メッセージガバナンスプラットフォームの構築デザインガイド どれが主要な指標で、どれが二次的な指標でしょうか?これが情報ガバナンスの主な問題です。 設計目標 基盤となるミドルウェア (RocketMQ/Kafka) の複雑さを隠し、一意の識別子を通じてメッセージを動的にルーティングすることを目的としています。同時に、リソース管理、検索、監視、アラーム、検査、災害復旧、視覚的な運用と保守を統合した統合メッセージガバナンスプラットフォームを構築し、メッセージミドルウェアの円滑で健全な運用を実現します。 メッセージガバナンスプラットフォームを設計する際に考慮すべき点
できるだけ簡単に使えるデザインガイド 複雑な問題を単純化することはスキルです。 最小限の統合API 2 つのメッセージ ミドルウェア (Kafka/RocketMQ) をカプセル化する統合 SDK を提供します。 1つのアプリケーション トピック コンシューマー グループの自動作成は、実稼働環境には適していません。自動作成は制御の喪失につながる可能性があり、ライフサイクル管理全体とクラスターの安定性に悪影響を及ぼします。申請プロセスは管理される必要がありますが、できるだけシンプルにする必要があります。たとえば、1 つのアプリケーションがすべての環境で有効になり、関連するアラーム ルールが生成されます。 クライアントガバナンスデザインガイド クライアントの使用が標準化されているかどうかを監視し、それを管理するための適切な対策を見つける シーン再生
現在のクラスターの Tps が 10,000 で、瞬時に 20,000 以上に増加すると仮定します。このトラフィックの急激な増加により、クラスター フロー制御が発生する可能性が高くなります。このようなシナリオでは、クライアントの送信速度を監視し、速度と急峻さのしきい値が満たされたときに送信をスムーズにする必要があります。
クライアントが数百 KB または数メガバイトのメッセージなどの大きなメッセージを送信すると、IO 時間が長くなり、クラスターのジッターが発生する可能性があります。このようなシナリオを管理するには、送信されたメッセージのサイズを監視する必要があります。私たちは事後検査を通じて大きなメッセージを持つサービスを特定し、メッセージのサイズを 10 KB 未満に抑えるためにサービスを圧縮または再構築することをユーザーに推奨します。
機能が反復されるにつれて、SDK バージョンもアップグレードされます。機能の変更に加えて、変更によってリスクも生じる可能性があります。古いバージョンを使用する場合、機能がサポートされない可能性があることと、セキュリティ上のリスクがある可能性があることが問題になります。 SDK の使用状況を把握するために、SDK のバージョンを報告し、検査を通じてユーザーにアップグレードを促すことができます。
消費者トラフィックの削除と復元には通常、次の使用シナリオがあります。1 つ目は、アプリケーションをリリースする前にトラフィックを削除する必要がある場合です。もう 1 つは、問題を特定するときにトラブルシューティングを行う前にトラフィックを削除することです。このシナリオをサポートするには、クライアントで削除/再開イベントをリッスンして、消費を一時停止および再開する必要があります。
メッセージを送信/消費するにはどのくらいの時間がかかりますか?時間の消費を監視することで、パフォーマンスが低いアプリケーションを特定し、ターゲットを絞った変革を促進してパフォーマンスを向上させることができます。
問題のトラブルシューティングを行う際には、送信されたメッセージ、メッセージの保存場所、メッセージが使用された日時など、メッセージのライフ サイクルに関連する情報を取得する必要があることがよくあります。この部分は、msgId を通じてメッセージ内のライフ サイクルを連結するために使用できます。もう 1 つの方法は、リンク識別子と同様に、メッセージ ヘッダーに rpcId/traceId を埋め込んで、メッセージを 1 つのリクエストにまとめることです。 ガバナンス対策の改善 必要な監視情報
共通のガバナンス対策
トピック/消費者グループのガバナンスデザインガイド トピックコンシューマグループのリソース使用状況を監視する シーン再生
一部のビジネス シナリオは消費の蓄積に非常に敏感ですが、一部のビジネスはバックログに敏感ではなく、後で追いつく限り消費することができます。たとえば、自転車のロックを解除するには数秒かかりますが、情報集約に関連するバッチ処理シナリオはバックログの影響を受けません。消費バックログ指標を収集することで、基準を満たす申請を担当する学生にリアルタイムアラートが送信され、消費状況をリアルタイムで把握できるようになります。
送信/消費速度がゼロに低下するとアラームが鳴りますか?シナリオによっては、速度をゼロまで下げることができません。ゼロになると、ビジネスが異常であることを意味します。速度指標を収集することで、しきい値を満たすアプリケーションに対してリアルタイムのアラートが発行されます。
コンシューマー ノードがオフラインになった場合は、アプリケーションの担当者に通知する必要があります。これには、ノードがオフラインになったときにアラーム通知をリアルタイムでトリガーできるように、登録ノード情報を収集する必要があります。
送信と消費の不均衡はパフォーマンスに影響を与えることがよくあります。ある相談の際、クラスメートがメッセージを送信するためのキーを定数に設定していたのを覚えています。デフォルトでは、キーをハッシュすることによってパーティションが選択され、すべてのメッセージが 1 つのパーティションに入ります。どうやってもパフォーマンスは向上しませんでした。さらに、各パーティションの消費バックログを検出し、過度の不均衡が発生した場合にリアルタイムのアラーム通知をトリガーする必要があります。 ガバナンス対策の改善 必要な監視情報
共通のガバナンス対策
クラスターのヘルス管理デザインガイド クラスターの健全性を測定するためのコア指標は何ですか? シーン再生
クラスターのヘルス チェックは、「クラスターは正常ですか?」という 1 つの質問に答えます。この問題は、クラスター ノードの数、クラスター内の各ノードのハートビート、クラスターの書き込み Tps 水位、およびクラスターの消費 Tps 水位を検出することで解決できます。
クラスター フロー制御は、多くの場合、クラスターのパフォーマンスが不十分であることを反映し、クラスター ジッターによってクライアントの送信タイムアウトが発生することもあります。クラスター内の各ノードのハートビート時間消費とクラスター書き込み TPS 水位の変化率を収集することで、クラスターが安定しているかどうかを把握できます。
高可用性には主に、特定の可用性ゾーンが利用できない、またはクラスター内の一部のトピックとコンシューマー グループが異常であるなどの極端なシナリオを対象とした対策が必要です。たとえば、MQ は、同じ都市の可用性ゾーン間でのマスター/スレーブ クロスデプロイメント、トピックとコンシューマー グループの災害復旧クラスターへの動的な移行、マルチアクティブなどを通じて解決できます。 ガバナンス対策の改善 必要な監視情報
共通のガバナンス対策
最も重要な指標に焦点を当てるこれらの主要な指標のうちどれが最も重要かを尋ねられたら、クラスター内の各ノードのハートビート検出、つまり応答時間 (RT) を選択します。 RT に影響を与える可能性のある理由を見てみましょう。 アラームについて
メッセージングプラットフォームアイコンアーキテクチャ図 ダッシュボードアイコン
RocketMQの実際的な落とし穴と解決策アクションガイド 私たちは常に落とし穴に遭遇しますが、遭遇したときにはそれを埋めていきます。 1. RocketMQ クラスターの CPU の不具合 問題の説明 RocketMQ スレーブ ノードとマスター ノードの CPU 使用率が頻繁に急上昇し、明らかな不具合が発生しました。多くの場合、スレーブ ノードが直接クラッシュしました。 システムログにのみエラーがあります
さまざまなデバッグ システム パラメータは、問題を遅くすることはできますが、問題を解消することはできません。不具合は依然として50%を超えています。 解決 クラスター内のすべてのシステムを CentOS 6 から CentOS 7 にアップグレードし、カーネル バージョンを 2.6 から 3.10 にアップグレードすると、CPU の不具合は解消されました。 2. RocketMQ クラスターのオンライン遅延メッセージ障害 問題の説明 RocketMQ コミュニティ バージョンはデフォルトで 18 のレイテンシ レベルをサポートしており、各レベルは設定された時間にコンシューマーによって正確に消費されます。この目的のために、消費間隔が正確であるかどうかも具体的にテストしましたが、テスト結果は非常に正確であることが示されました。しかし、このような正確な機能には、実は問題がありました。ビジネス上の同僚から、特定のオンライン クラスター内の遅延メッセージを消費できなかったという報告がありました。変だったよ! 解決 「 delayOffset.json 」と「 consumerqueue / SCHEDULE_TOPIC_XXXX 」を他のディレクトリに移動します。これは、それらを削除するのと同じです。ブローカーノードを 1 つずつ再起動します。再起動後、遅延メッセージ機能が正常に送信され、消費されていることを確認しました。 高可用性マイクロサービスガバナンスプラットフォームを構築するデザインガイド 当社のコアサービスと非コアサービスはどれですか?これがサービスガバナンスの主な問題です。 設計目標 このサービスは、突然のトラフィックの急増にも対応でき、特にコアサービスの円滑な運用を保証します。 アプリケーションのグレーディングとグループ化の展開アプリケーションの評価 アプリケーションは、ユーザーとビジネスへの影響の評価基準に基づいて 4 つのレベルに分類されます。
S1:自転車、電動アシスト自転車などの主力事業の基幹リンク、ライドシェアの受発注の基幹リンク、およびこれらの基幹リンクに大きく依存するアプリケーションなど、障害が発生すると外部ユーザーが使用できなくなる、または重大な資産損失が発生する基幹製品。 S2: トランザクションに直接影響を及ぼさないが、フロントエンドビジネスまたはビジネスバックエンド処理の重要な構成の管理と保守に関連する機能。 S3: サービス障害はユーザーやコア製品ロジックにほとんど影響を与えず、主要ビジネスや小規模な新規ビジネスにも影響を与えません。これらは社内ユーザーにとって重要なツールであり、直接業務に影響を与えるものではありませんが、関連する管理機能もフロントエンド業務にほとんど影響を与えません。 S4: 社内ユーザーが使用するシステムで、ビジネスに直接影響しないか、後でオフラインにする必要があるシステム。 グループ展開 S1 サービスは当社の中核サービスであり、保護の中心です。コア以外のサービス トラフィックによる予期しない影響から保護する必要があります。
複数の電流制限とヒューズ機能を備えた構造当社が構築する高可用性プラットフォーム機能 部分電流制限効果図
各リソースとIPノードの詳細なトラフィック 要約する
著者についてLiang Yong (Lao Liang) は、「RocketMQ 実践と上級」コラムの共著者であり、「RocketMQ Technical Insider」のレビューに参加しました。 ArchSummit Global Architect Conference および QCon Case Study Group の講師。 |
<<: AI、IoTセンサー、ハイブリッドクラウドによるインダストリー4.0の拡張
>>: iSoftStone が CSIC 2021「年間最優秀革新的な SaaS サービス プロバイダー」を受賞
デジタル ビジネスが企業の IT インフラストラクチャに課す要求とプレッシャーを考慮すると、企業の ...
SEOが登場した当初は最適化も容易で、ボトルネックとなるようなこともありませんでした。しかし、SEO...
Hostcat は、QN データセンターが所有するブランドである Pacificrack から最新の...
分散トレース システムを使用すると、ユーザーは、複数のアプリケーション、サービス、データベース、およ...
今日のWeiboは、コンテンツ、セレブリティ、ソーシャルの3つのカテゴリーに簡単に分けられます。We...
人生において、私たちはいつも失敗の言い訳を探したがります。「...が好きじゃないから」「...だから...
A5ウェブマスターネットワーク(www.admin5.com)は4月10日、4月4日にWeChatチ...
この記事はWeChatの公開アカウント「SDNLAB」から転載したものです。この記事の転載については...
OpenTelemetry Operator は、OpenTelemetry コンポーネントをデプロ...
[51CTO.com からのオリジナル記事] IDC は、ハイブリッド クラウドが将来クラウド市場全...
[51CTO.com クイック翻訳] クラウド運用の経験がある読者は、クラウドネイティブ アプリケー...
ramnode.comは現在、ローエンドVPS販売ランキングで1位にランクされています。米国西海岸の...
「国内のIT環境が従来のアーキテクチャからクラウドアーキテクチャへと進化するにつれ、プライベートクラ...
SD-WAN がリモート ユーザーがクラウドベースのアプリケーションにアクセスするための主な方法にな...
spinservers は、米国独立記念日のために、ダラス データ センターに 10Gbps 帯域幅...