Sermant: 에이전트 없는 서비스 그리드 아키텍처 및 임계값 없는 플러그인 개발 분석

이 기사는 Huawei Cloud 커뮤니티 " Sermant: 에이전트 없는 서비스 그리드 아키텍처 및 임계값 없는 플러그인 개발 분석 " 에서 공유되었습니다 . 저자: Huawei Cloud Community에서 선택.

이번 라이브 방송의 주제는 " 아키텍처 설계에서 개발 실습까지, 간단한 용어로 Sermant 이해 "입니다. Huawei Cloud 네이티브 DTSE 기술 전도사이자 Huawei Cloud 수석 엔지니어이자 Sermant 오픈 소스 커뮤니티의 PMC 핵심 멤버인 Luan Wenfei는 개발자에게 아키텍처 설계 관점에서의 상세한 소개와 함께 Sermant의 클래스 로더 아키텍처와 플러그인 메커니즘을 학습했으며, 실제 전투에서 통합된 동적 구성의 기본 기능 개발부터 고급 활용까지 단계별로 플러그인 개발을 완료했습니다. 기능 및 통합 로깅 기능.

Sermant 코어 메커니즘 - 플러그인

Sermant는 Sermant 프레임워크 계층과 Sermant 서비스 거버넌스 계층의 두 계층으로 나누어져 있으며, Sermant 프레임워크는 플러그인 개발자가 서비스 관리 플러그인을 빠르게 개발할 수 있도록 일련의 API를 제공합니다.

서비스 관리 계층은 흐름 제어, 레이블 라우팅 등을 포함하여 다양한 플러그인에 패키지된 다양한 서비스 관리 기능으로 구성됩니다. 또한 일부 상태 표시와 이벤트 모니터링 및 관리에 사용할 수 있는 백엔드도 포함되어 있습니다.

cke_128.jpeg

Sermant의 플러그인 메커니즘은 Java의 SPI 메커니즘을 활용합니다. 확장성이 뛰어난 많은 프로젝트에서 SPI는 자체 확장을 로드하는 데 사용됩니다. Sermant는 프레임워크에서 플러그인 선언 인터페이스를 정의하여 다양한 서비스 관리 플러그인을 로드합니다. 개발자는 플러그인을 Sermant에 쉽게 연결하기 위해 인터페이스 계약을 따르기만 하면 됩니다.

cke_129.png

Sermant 핵심 메커니즘 - 클래스 격리

Sermant는 프레임워크와 플러그인, 플러그인과 플러그인, Sermant와 마이크로서비스 간의 클래스 충돌을 피하기 위해 프레임워크, 플러그인, 마이크로서비스 간의 포괄적인 클래스 격리를 구현합니다. 서비스 거버넌스 기능을 개발하는 동안 격리 기능이 제공되며 클래스 충돌을 걱정할 필요가 없습니다.

cke_130.png

또한, Sermant의 클래스 로딩 구조에는 매우 중요한 메커니즘이 있는데, 서비스 관리 플러그인 개발 과정에서 호스트 서비스의 일부 클래스가 자주 사용되는데, 맹목적으로 격리를 수행하면 많은 문제가 발생할 수 있다. 개발에 도입된 반사 논리는 실행 성능에 큰 영향을 미칩니다. 따라서 Sermant 클래스 로딩 구조에 로컬 클래스 로딩 메커니즘이 추가되어 플러그인이 해당 Aspect 클래스의 클래스 로더를 사용하여 해당 Aspect에서 사용되는 호스트 클래스를 클래스 로드할 수 있습니다.개발자 관점에서 서비스 거버넌스 기능은 복잡한 반영 작업을 피하면 개발 효율성이 크게 향상됩니다.

cke_131.png

Sermant 플러그인 개발을 위한 실용적인 팁

기본 능력 

Sermant 서비스 거버넌스 플러그인은 단순히 측면의 모음이며 궁극적으로 복잡한 거버넌스 기능을 완성합니다. 관점 지향 프로그래밍에는 관점의 교차 위치를 지정하는 조인 포인트와 관점 실행의 특정 동작인 조언이라는 두 가지 핵심 개념이 있습니다. Sermant에 대응하는 플러그인 개발에 대응하는 로직도 있는데, Sermant에서 관점의 위치를 ​​선언하는 것을 플러그인 선언이라 하고, 관점 로직을 실행하는 것을 인터셉터라고 한다.

Sermant의 플러그인 선언은 클래스 이름, 슈퍼클래스, 주석 등을 기반으로 클래스를 찾을 수 있고, 메서드 이름, 유형, 매개변수, 반환 값 등을 통해 메서드를 찾을 수 있습니다. 위치 지정이 완료된 후 바이트코드 향상이 수행됩니다.

Sermant의 인터셉터는 Before, After, Throw의 세 가지 주요 수명 주기를 제공하며 메서드 실행 건너뛰기, 메서드 매개 변수 수정, 메서드 반환 수정, 예외 발생 수정과 같은 일반 기능을 제공합니다.

cke_132.png

고급 기능 - 통합된 동적 구성 

Sermant는 계층적 모델 설계를 기반으로 하는 구성 관리 솔루션을 제공하며, 핵심 구성 요소로는 Group과 Key가 있습니다. Sermant는 구성 항목을 서로 다른 그룹(그룹화 정보)으로 분리하여 구성 관리를 보다 유연하고 확장 가능하게 하며, 동시에 Key를 통해 구성 항목의 특정 속성을 식별하여 구성 항목에 대한 정밀한 제어 및 제어를 실현합니다.효율적인 유지 관리, Sermant의 모델 개념 모든 주류 구성 센터에 대응 장치가 있습니다.

cke_133.png

가장 중요한 점은 Sermant가 구성 센터의 차이점으로부터 개발자와 사용자를 보호하여 Sermant가 코드를 수정하지 않고도 여러 구성 센터에 연결할 수 있도록 한다는 것입니다. 플러그인 개발자는 각 구성 센터의 실제 필드를 알지 못한 채 그룹과 키를 통해 구성을 나누기만 하면 구성 센터에 의존하지 않는 동적 서비스 거버넌스 기능을 개발할 수 있습니다.

고급 기능 - 통합 로그 

Sermant 로그 개발자가 통합 로그를 사용할 때 JUL 인터페이스를 통해 로그를 구성할 수 있으며 더 이상 다른 타사 로그 외관 종속성에 의존할 필요가 없으며 Java 기본 로그 인터페이스와 Sermant가 제공하는 통합 로그만 사용하면 됩니다. 마이크로서비스로부터 완전히 분리됩니다. , 사이드카 로그 시스템이 마이크로서비스 로그 시스템에 미치는 부정적인 영향을 방지합니다.

또한, Sermant에서는 로그 프로세서를 수정하여 상위 로그를 모니터링할 수 있으며, 상위 로그를 구성하여 예외사항을 보고할 수 있으며, 개발자가 2차 작업을 수행할 필요 없이 사이드카 작동의 이상 상태를 즉시 발견할 수 있습니다. .

cke_134.png

저를 따라와 함께 "플러그인 개발"을 연습해 볼까요?

실제 개발 단계에서는 개발자들이 특정 클래스와 메소드를 모니터링할 수 있는 단순 모니터링 기능을 개발하도록 이끌었고, 플러그인 선언 및 차단 지점을 정의함으로써 간편 모니터링 플러그인 개발을 빠르게 완료할 수 있었다.

기본 기능이 완성된 후 동적 구성을 통해 모니터링 기능의 개폐를 제어하고, 비정상 시나리오에 의해 생성된 로그는 Sermant 통합 로그를 통해 모니터링합니다. Sermant의 플러그인 개발 학습 곡선이 매우 개발자 친화적이라는 것을 확인했습니다.

cke_135.png

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

IntelliJ IDEA 2023.3 및 JetBrains Family Bucket 연간 주요 버전 업데이트 새로운 개념 "방어 프로그래밍": 안정적인 작업 수행 GitHub.com은 1,200개 이상의 MySQL 호스트를 실행합니다. 8.0으로 원활하게 업그레이드하는 방법은 무엇입니까? Stephen Chow의 Web3 팀은 다음 달에 독립 앱을 출시할 예정입니다. Firefox는 사라질까요? Visual Studio Code 1.85 출시, 부동 창 US CISA는 메모리 보안 취약점을 제거하기 위해 C/C++ 포기를 권장합니다. Yu Chengdong: Huawei는 내년에 파괴적인 제품을 출시하고 업계 역사를 다시 쓸 것입니다. TIOBE 12월: C#이 올해의 프로그래밍 언어가 될 것으로 예상됩니다. A 논문 Lei Jun이 30년 전에 작성함: "컴퓨터 바이러스 판별 전문가 시스템의 원리 및 설계"
{{o.이름}}
{{이름}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10320467
Recomendado
Clasificación