Dubbo 실천 (4) 디자인 모델

2309 단어
Dubbo 프레임 워 크 는 초기 화 와 통신 과정 에서 다양한 디자인 모델 을 사용 하여 클래스 로드, 권한 제어 등 기능 을 유연 하 게 제어 할 수 있 습 니 다.
공장 모드
Provider 는 export 서비스 에서 ServiceConfig 의 export 방법 을 호출 합 니 다.ServiceConfig 에 필드 가 있 습 니 다:
private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

Dubbo 에는 이런 코드 가 매우 많다.이것 도 일종 의 공장 모델 로 실현 류 의 획득 만 JDK SPI 의 메커니즘 을 채택 했다.이렇게 실현 되 는 장점 은 확장 성 이 강하 다 는 것 이다. 확장 을 실현 하려 면 classpath 에 파일 을 추가 하면 된다. 코드 제로 침입.또한 위의 Adaptive 와 같이 호출 할 때 동적 으로 어느 것 을 호출 할 지 결정 할 수 있 습 니 다. 그러나 이러한 실현 으로 인해 동적 대 리 를 사용 하면 코드 디 버 깅 이 비교적 번 거 로 울 수 있 으 므 로 실제 호출 의 실현 유형 을 분석 해 야 합 니 다.
장식 기 모드
Dubbo 는 시작 과 호출 단계 에서 장식 기 모드 를 대량으로 사용 했다.Provider 가 제공 하 는 호출 체인 을 예 로 들 면 구체 적 인 호출 체인 코드 는 ProtocolFilter Wrapper 의 buildInvokerChain 에서 이 루어 집 니 다. 구체 적 으로 는 그룹 = provider 가 포 함 된 Filter 를 실행 하고 order 에 따라 정렬 합 니 다. 마지막 호출 순 서 는 다음 과 같 습 니 다.
EchoFilter -> ClassLoaderFilter -> GenericFilter -> ContextFilter -> ExecuteLimitFilter -> TraceFilter -> TimeoutFilter -> MonitorFilter -> ExceptionFilter

더 정확히 말 하면 여 기 는 장식 기와 책임 체인 모델 의 혼합 사용 이다.예 를 들 어 EchoFilter 의 역할 은 메아리 테스트 요청 여 부 를 판단 하 는 것 이 고, 그렇다면 내용 을 직접 되 돌려 주 는 것 이 책임 체인 의 구현 이다.한편, ClassLoader Filter 는 메 인 기능 에 만 기능 을 추가 하고 현재 스 레 드 를 변경 하 는 ClassLoader 는 전형 적 인 장식 기 모드 입 니 다.
관찰자 모드
Dubbo 의 Provider 가 시 작 될 때 등록 센터 와 상호작용 을 해 야 합 니 다. 먼저 자신의 서 비 스 를 등록 한 다음 에 자신의 서 비 스 를 구독 하고 구독 할 때 관찰자 모드 를 사용 하여 listener 를 엽 니 다.등록 센터 는 서비스 업데이트 여 부 를 5 초 마다 점검 합 니 다. 업데이트 가 있 으 면 이 서비스 제공 자 에 게 notify 메 시 지 를 보 냅 니 다. provider 는 notify 메 시 지 를 받 은 후 Notify Listener 의 notify 방법 을 실행 하여 모니터 방법 을 실행 합 니 다.
동적 에이전트 모드
Dubbo 확장 JDK SPI 의 클래스 ExtensionLoader 의 Adaptive 구현 은 전형 적 인 동적 에이전트 구현 입 니 다.Dubbo 는 실현 류 를 유연 하 게 제어 해 야 한다. 즉, 호출 단계 에서 동태 적 으로 매개 변수 에 따라 어떤 실현 류 를 호출 할 지 결정 하기 때문에 선생님 이 대리 류 를 만 드 는 방법 으로 유연 한 호출 을 할 수 있다.프 록 시 클래스 를 만 드 는 코드 는 ExtensionLoader 의 createAdaptive ExtensionClassCode 방법 입 니 다.프 록 시 클래스 의 주요 논 리 는 URL 매개 변수 에서 지정 한 매개 변수의 값 을 실현 클래스 의 key 로 가 져 오 는 것 입 니 다.
다음으로 전송:https://www.cnblogs.com/warehouse/p/9334594.html

좋은 웹페이지 즐겨찾기