Sermant: エージェントレス サービス グリッド アーキテクチャの分析としきい値フリーのプラグイン開発

この記事は、Huawei クラウド コミュニティ「 Sermant: Analysis of Agentless Service Grid Architecture and Threshold-free Plug-in Development 」から共有されたもので、著者: Huawei クラウド コミュニティによって選択されました。

このライブブロードキャストのテーマは「アーキテクチャ設計から開発実践まで、Sermant を簡単に理解する」です。Huawei Cloud ネイティブ DTSE テクノロジー エバンジェリスト、Huawei Cloud シニア エンジニア、そして Sermant オープンソース コミュニティの PMC コア メンバーである Luan Wenfei が、開発者向けの情報を提供します。 Sermant社のクラスローダーアーキテクチャとプラグインの仕組みをアーキテクチャ設計の観点から詳しく紹介し、実戦での基本的な機能開発から統合動的構成の高度な利用まで、段階的にプラグイン開発を完了しました。機能と統合ログ機能。

Sermant コアメカニズム - プラグイン

Sermant は、Servant フレームワーク層と Sermant サービス ガバナンス層の 2 つの層に分かれており、Servant フレームワークは、プラグイン開発者がサービス管理プラグインを迅速に開発するための一連の API を提供します。

サービス管理層は、フロー制御、ラベル ルーティングなどのさまざまなサービス管理機能で構成され、さまざまなプラグインにパッケージ化されています。一部のステータス表示やイベントの監視と管理に使用できるバックエンドも含まれています。

cke_128.jpeg

Sermant のプラグイン メカニズムは Java の SPI メカニズムの恩恵を受けています。多くの拡張性の高いプロジェクトでは、SPI は独自の拡張機能をロードするために使用されます。Servant は、さまざまなサービス管理プラグインをロードするために、フレームワーク内でプラグイン宣言インターフェイスを定義します。開発者は、インターフェイス コントラクトに従うだけで、プラグインを Sermant に簡単に接続できます。

cke_129.png

Sermant コア メカニズム - クラス分離

Sermant は、フレームワーク、プラグイン、およびマイクロサービス間の包括的なクラス分離を実装し、フレームワークとプラグイン間、プラグインとプラグイン間、および Sermant とマイクロサービス間のクラス競合を回避します。開発者の観点からは、クラスは意識されません。サービス ガバナンス機能の開発中に分離機能が使用できるため、クラスの競合を心配する必要がありません。

cke_130.png

また、Sermant のクラスローディング構造には非常に重要な仕組みがあり、サービス管理プラグインの開発プロセスでは、ホストサービスの一部のクラスがよく使用されますが、やみくもに分離を行うと多くの問題が発生します。開発時に導入されたリフレクティブロジックは、実行パフォーマンスに大きく影響します。したがって、ローカル クラス ロード メカニズムが Sermant クラス ロード構造に追加され、プラグインがアスペクト クラスのクラス ローダーを使用して、アスペクトで使用されるホスト クラスをクラス ロードできるようになります。複雑な反映操作を回避することで開発効率が大幅に向上します。

cke_131.png

Sermant プラグイン開発の実践的なヒント

基本的な能力 

Sermant サービス ガバナンス プラグインは単なる要素の集合であり、最終的には複雑なガバナンス機能を完成させます。アスペクト指向プログラミングには、アスペクトの横断的な位置を指定する結合ポイントと、アスペクト実行の特定の動作であるアドバイスという 2 つの中心的な概念があります。Sermantに対応したプラグイン開発に対応したロジックもあり、Sermantにおけるアスペクトの位置を宣言するものをプラグイン宣言、アスペクトのロジックを実行するものをインターセプタと呼びます。

Sermant のプラグイン宣言では、クラス名、スーパークラス、アノテーションなどに基づいてクラスを見つけたり、メソッド名、型、パラメータ、戻り値などを通じてメソッドを見つけたりできます。位置決めが完了した後、バイトコード拡張が実行されます。

Sermant のインターセプタは、Before、After、Throw の 3 つの主要なライフ サイクルを提供し、メソッド実行のスキップ、メソッド パラメータの変更、メソッド戻りの変更、例外スローの変更などの一般的な機能を提供します。

cke_132.png

高度な機能 - 統合された動的構成 

Sermant は、グループとキーを含む階層モデル設計に基づいた構成管理ソリューションを提供します。Sermantは、構成アイテムを異なるGroup(グループ化情報)で分離することで、構成管理をより柔軟かつスケーラブルにすると同時に、Keyによって構成アイテムの特定の属性を識別し、構成アイテムの正確な管理と制御を実現します。すべての主流構成センターに対応者がいます。

cke_133.png

最も重要な点は、Sermant が開発者とユーザーを構成センターの違いから保護し、コードを変更せずに複数の構成センターに接続できるようにすることです。プラグイン開発者は、各構成センターの実際のフィールドを知らなくても、グループとキーによって構成を分割するだけで、構成センターに依存しない動的なサービス ガバナンス機能を開発できます。

高度な機能 - 統合ログ 

Sermant ログ開発者が統合ログを使用する場合、JUL インターフェースを介してログを構築できます。他のサードパーティのログ ファサード依存関係に依存する必要はなくなりました。Java ネイティブ ログ インターフェースと Sermant が提供する統合ログのみを使用する必要があります。マイクロサービスから完全に分離されており、サイドカー ログ システムがマイクロサービス ログ システムに与える悪影響を回避します。

さらに、Servant のログプロセッサは高レベルのログを監視するように変更されており、高レベルのログは例外を報告するように設定でき、開発者が二次的な操作を実行することなく、サイドカー動作の異常状態を即座に発見できます。 。

cke_134.png

フォローして一緒に「プラグイン開発」を実践しましょう

実際の開発段階では、特定のクラスやメソッドを監視する簡単な監視機能の開発を開発者に指導し、プラグインの宣言とインターセプトポイントを定義することで、簡単な監視プラグインの開発を迅速に完了できるようになりました。

基本的な機能が完了した後は、動的構成によって監視機能の開始と終了が制御され、異常なシナリオによって生成されたログは Sermant 統合ログによって監視されます。いくつかの簡単な手順で、非侵入型監視コンポーネントを使用できます。 Sermant のプラグイン開発の学習曲線は開発者にとって非常にフレンドリーであることがわかりました。

cke_135.png

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

IntelliJ IDEA 2023.3 と JetBrains Family Bucket の年次メジャー バージョン アップデート 新しいコンセプト「防御型プログラミング」: 安定した仕事に就く GitHub.com では 1,200 を超える MySQL ホストが稼働していますが、8.0 にシームレスにアップグレードするにはどうすればよいですか? Stephen Chow の Web3 チームは来月、独立したアプリをリリースする予定ですが、 Firefox は廃止されるのでしょうか? Visual Studio Code 1.85 がリリース、フローティング ウィンドウ 米国 CISA、メモリ セキュリティの脆弱性を排除するために C/C++ の放棄を推奨 余成東 : ファーウェイは来年破壊的製品を発売し、業界の歴史を書き換える TIOBE 12 月: C# は今年のプログラミング言語になると期待される 論文30年前にLei Junが書いた「コンピュータウイルス判定エキスパートシステムの原理と設計」
{{名前}}
{{名前}}

おすすめ

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