動的構成センターを使用して JavaAgent でマイクロサービスの多様なガバナンスを実装する方法

この記事は、Huawei Cloud Community「動的構成センターを使用して JavaAgent でマイクロサービスの多様なガバナンスを実装する方法」(著者: Huawei Cloud Open Source) から共有されたものです。

I.はじめに

マイクロサービス ガバナンスにおける JavaAgent の広範なアプリケーションと開発により、実行時にマイクロサービスを監視、管理、調整して、さまざまなビジネス ニーズや運用環境に対応できるようになります。ただし、マイクロサービス アーキテクチャの複雑さが増すにつれて、マイクロサービスのガバナンスの管理と構成がますます困難になるため、JavaAgent でマイクロサービスの多様なガバナンスを実現するには、動的構成センターを利用することが重要になります。

Sermant は、動的な構成を通じてマイクロサービスの多様なガバナンスをサポートする、Java バイトコード拡張テクノロジーに基づくエージェントレス サービス グリッドです。以下は Sermant のマイクロサービス アーキテクチャです。

10001.png

Sermant はダイナミック コンフィギュレーション センターを直接提供していませんが、異なるコンフィギュレーション センターに基づいてダイナミック コンフィギュレーション機能を実装しており、この機能に基づいて、Sermant は主流のコンフィギュレーション センターでの構成情報の変更を監視するだけでなく、さまざまなシナリオに応じた構成監視を実行できます。例: Sermant サービスの構成変更を監視できるだけでなく、アプリケーションのグローバル構成変更も監視できます。この機能に基づいて、開発者や運用保守担当者がマイクロサービス ガバナンス機能を管理できるようになります。

2. Sermantの動的構成モデル

Sermant 動的構成モデルは、階層モデル設計に基づく構成管理ソリューションであり、そのコア コンポーネントにはグループとキーが含まれます。Sermantは、構成アイテムを異なるグループ(グループ化情報)で分離することで、構成管理をより柔軟かつスケーラブルにすると同時に、Keyによって構成アイテムの特定の属性を識別し、構成アイテムの正確な制御と制御を実現し、効率的なメンテナンスを実現します。

Sermant 動的構成モデルでは、グループの数が多すぎてはなりません。Sermant 動的構成モデルでのグループの実装は、Nacos の名前空間などの構成センターのデータ モデルに基づいています。Nacos の名前空間はテナント分離の実装に使用されるため、多すぎてはなりません。したがって、グループの数はSermant 動的構成モデル内のグループは多すぎてはなりません。

Group と比較して、Servant 動的構成モデルでは複数のキーを作成できますが、単一のインスタンスがあまりにも多くのキーをサブスクライブするべきではありません。これは、構成アイテムのサブスクリプションおよびメンテナンスのプロセス中に、単一のインスタンスがあまりにも多くのキーをサブスクライブすると、サービスのパフォーマンスの問題が発生したり、時期尚早な構成更新や構成の競合が発生したりする可能性があるためです。したがって、単一インスタンスにサブスクライブされるキーの数を制御することは、構成管理の効率と可用性を確保するための重要な要素の 1 つです。

Sermant 動的構成モデルは、グループとキーの有機的な組み合わせを通じて、複雑な構成シナリオを包括的にカバーし、効率的にサポートします。同時に、グループとキーの数を制御することにより、構成アイテムのサブスクリプションと更新プロセスが簡素化され、システムの可用性と保守性が向上します。

Sermant の動的構成モデルを次の図に示します。

10002.png

  • Zookeeper に基づいた 構成モデルの実装

Zookeeper はツリー状のデータ モデルを採用しており、各データ ノードにデータ情報を格納します。これらのノードは Znode と呼ばれます。Znode は Zookeeper の最小のデータ単位です。Znode は複数の子ノードを持つことができます。/zookeeper/key1 などのパスによって決定できる一意の Znode。以下に示すように:

10003.png

Sermant の動的構成モデルは、次のように Zookeeper 構成センターに基づいて実装されます。

Group(グループ情報):Znodeノードの親ノードパス情報をグループ情報として使用します。

キー(設定項目名):Znodeノードのノード名を設定項目のキーとして使用し、ノードデータを具体的な設定内容として使用します。

Znode ノードは異なるパスを介して分離でき、同じノード名のノードが異なるパスに存在することができます。Sermant が異なるグループ (グループ化情報) を通じて構成アイテムを分離し、同じグループ (グループ化情報) が同じキー (構成アイテム名) を持つことができることを確認します。

  • Nacos に基づく構成モデルの実装

Nacos データ モデルは階層モデルであり、Nacos 構成管理の場合、名前空間、グループ、および日付 ID を通じて構成セットを見つけることができます。以下に示すように:

10004.png

名前空間は主に、異なる環境で構成を分離するために使用されますグループは主に、異なるプロジェクトまたはアプリケーションに使用されます構成セットにはシステムのさまざまな構成情報を含めることができます。各構成セットの ID はデータ ID です。構成セットに含まれる各構成コンテンツが構成アイテムです。これは、特定の構成可能なパラメータとその値の範囲を表し、通常は key=value の形式で表されます。

Sermant の動的構成モデルは、次のように Nacos 構成センターに基づいて実装されます。

Group(グループ情報):NacosのNamespace(ネームスペース)と構成グループ(Group)を組み合わせてSermantの動的構成モデルのグループ情報とします。

キー(構成アイテム名): Sermantの動的構成モデルの構成アイテム名としてNacosの構成セットID(Data Id)が使用されます。

構成セット (データ ID) は、異なる名前空間および構成グループ (グループ) を通じて分離できます。同じ名前の構成セット (データ ID) は、異なる名前空間および構成グループ (グループ) の下に存在できます。Sermant が異なるグループ (グループ化情報) を通じて構成アイテムを分離し、同じグループ (グループ化情報) が同じキー (構成アイテム名) を持つことができることを確認します。

  • ServiceComb Kie に基づく 構成モデルの実装

ServiceComb-Kie (ServiceComb Key-Value ストア) のデータ モデルは、構成情報を保存および管理するためのキーと値のペア (Key-Value) に基づいています。ServiceComb-Kie はタグに基づいて構成の有効範囲を制御し、タグとキーを通じて一意のキーと値のペアを決定できます。

Sermant の動的構成モデルは、次のように ServiceComb-Kie に基づいて実装されます。

Group(グループ情報):ServiceComb-Kieのラベル情報をServantの動的構成モデルのGroup情報として利用します。

Key(設定項目名):ServiceComb-Kieの設定項目名がServantの動的構成モデルのKeyとして使用されます。

ServiceComb-Kie 構成アイテムは、異なるラベル情報によって分離でき、同じ構成アイテム名の構成は異なるラベルの下に存在でき、異なる構成アイテムは同じラベル情報の下に構成できます。Sermant が異なるグループ (グループ化情報) を通じて構成アイテムを分離し、同じグループ (グループ化情報) が同じキー (構成アイテム名) を持つことができることを確認します。

3. Sermant 動的構成モデルのベスト プラクティス

動的構成は Sermant の中核機能の 1 つであり、Sermant がグレースケール リリース、電流制限のダウングレード、リンク トラッキングなどのマイクロサービス ガバナンス機能を統合された方法で管理するのに役立ちます。以下に示すように:

10005.png

マイクロサービス サービス ガバナンスに Sermant 動的構成を使用する場合は、グループ (グループ化情報) とキー (構成項目名) の作成が多すぎることを避け、構成の複雑さと混乱を軽減し、構成の監視が多すぎることによるパフォーマンスの消費を軽減する必要があります。また、構成の保守性と読みやすさも向上します。

次に、ラベル ルーティング プラグインを使用した Sermant の動的構成のベスト プラクティスについて説明します。

1) ラベルルーティングプラグインの機能

ラベル ルーティング プラグインは、Sermant がマイクロサービス ルーティング管理機能を実装するための基盤です。ラベル ルーティング プラグインは、サービス粒度またはグローバル粒度でサービス プロバイダーのルーティング ルールを構成し、1 つ以上のサービス プロバイダーを同じグループに分割して、トラフィックを制限し、トラフィック分離の目的を達成するために、指定されたグループ内でのみフローを行います。ラベル ルーティング プラグインは、トラフィック ダイイング、ブルーグリーン リリース、グレースケール リリース、フルリンク グレースケール、同じアベイラビリティ ゾーン内での優先通話などのシナリオにおける機能の基礎でもあります。

2) ラベルルーティングプラグインの動的構成モデル

ラベル ルーティング プラグインは、Servant の動的構成モデルに基づいてルールを構成します。マイクロサービス シナリオでは、ラベル ルーティング プラグインの動的構成モデルは次のように実装されます。

グループ (グループ情報): アプリケーション名 appName と環境名 experience に基づいて構成されます。例: app=${appName}&environment=${environment }

キー (設定項目名): サービス粒度のルール。キー値はservicecomb.routeRule.${srviceName}で、${srviceName}はターゲット アプリケーションのマイクロサービス名です。グローバル粒度ルールの場合、キー値はservicecomb.globalRouteRuleです。

ラベル ルーティング プラグインは、次のように、Zookeeper 構成センターの構成モデルに基づいて実装されます。

10006.png

Sermant動的構成モデルに基づくラベルルーティングプラグインの実装により、Servant動的構成モデルのGroup(グループ情報)がアプリケーション名と環境名に基づく生成をサポートしていることがわかります。 1 つのマイクロサービス アプリケーションに対して 1 つの Group (グループ情報) を作成する必要があるため、多数の Group (グループ化情報) を作成することを避けることができます。Sermant 動的構成モデルの Key (構成項目名) は、マイクロサービスのシナリオとサービス名に基づいた生成をサポートしており、このとき、単一のサービスまたはすべてのサービスに対して動的に構成できるため、単一のインスタンスがキー (構成項目名) を設定する必要はありません。複数の構成項目を監視し、監視を回避する 複数の構成項目は、サービスのパフォーマンスの低下、適時でない構成更新、構成の競合などの問題を引き起こします。

4. まとめ

JavaAgent における動的構成は、マイクロサービスの多様なガバナンスを実現する上で重要な役割を果たしており、マイクロサービス ガバナンスを実現するための重要な手段の 1 つです。動的構成を通じて、マイクロサービスの実行時のステータスを動的に調整して、マイクロサービスの動的なガバナンスを実現できます。たとえば、マイクロサービスの負荷分散戦略は、実際の負荷状況に応じて動的構成を通じて調整して、より洗練された負荷分散を実現できます。

Sermant の動的構成モデルをマイクロサービス ガバナンスに使用すると、マイクロサービスの動的ガバナンスを実現できるだけでなく、マイクロサービス ガバナンス中の監視など、グループが多すぎることや構成項目が多すぎることによって引き起こされる JavaAgent の消費を削減でき、構成の保守性と可読性が向上します。さらに、Sermant の動的構成モデルは、主流の構成センターである ServiceComb Kie、Zookeeper、Nacos もサポートしており、さまざまなマイクロサービス ガバナンス シナリオでの使用に対応でき、ユーザーはマイクロサービス ガバナンスと運用保守業務をより簡単に実行できるようになります。

クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~

オープンソース フレームワーク NanUI の作者がスチールの販売に切り替えたため、プロジェクトは中断されました。Apple App Store の無料リストのナンバー 1 はポルノ ソフトウェア TypeScript です。人気が出てきたばかりなのに、なぜ大手はそれを放棄し始めるのでしょうか。 ? TIOBE 10月リスト:Javaが最大の下落、C#はJavaに迫る Rust 1.73.0リリース AIガールフレンドにイギリス女王暗殺を勧められた男性に懲役9年の実刑判決 Qt 6.6正式リリース ロイター:RISC-Vテクノロジーが中米テクノロジー戦争の鍵となる 新たな戦場 RISC-V: 単一の企業や国に支配されない レノボ、Android PC の発売を計画
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/10116100