Spring Cloud Zuul 경로 규칙 동적 업데이트 분석
배경
Spring Cloud Zuul 은 마이크로 서비스의 게 이 트 웨 이 로 서 zuul 로 를 거 쳐 내부 로 가 는 각 service 를 요청 합 니 다.서 비 스 를 추가/수정/삭제 하 는 경로 규칙 에 대한 수요 가 존재 하기 때문에 zuul 의 경로 규칙 의 동적 변경 기능 은 제공 합 니 다.
zuul 게 이 트 웨 이 를 다시 시작 하지 않 아 도 실시 간 으로 업데이트 할 수 있 습 니 다.현재 다음 과 같은 몇 가지 방식 이 있 습 니 다.
1.refresh+config-server 이벤트 동적 새로 고침 기반
(1)spring boot 는 spring actuator 가 제공 하 는 refresh 기능 을 통합 한 후 congfig-server 의 git 설정 창고 에 zuul 의 경로 규칙 을 추가 합 니 다.
(2)post 방식 으로 새로 고침 점 새로 고침http://127.0.0.1:8080/refresh(본 기 계 를 예 로 들 면)
(3)zuul 에 다시 방문 한 결과 경로 규칙 에 새로운 규칙 이 존재 합 니 다.
refresh 작업 을 시작 합 니 다.->ZuulPropeties 에서 route 는 다음 과 같이 전체 절 차 를 업데이트 합 니 다.
Zuul 게 이 트 웨 이 는 규칙 에 핵심 클래스 인 Discovery Client RouteLocator 와 Simple RouteLocator 를 불 러 옵 니 다.상세 한 것 은 Spring Cloud Zuul 소스 코드 를 참고 하 십시오.여 기 는 분석 을 하지 않 습 니 다.
루트 규칙 의 로드 메커니즘 은 주로 Simple RouteLocator 를 통 해 ZuulPropetties 의 루트 규칙 을 불 러 옵 니 다.위의 그림 은 refresh 에서 속성 으로 Zuul Properties 를 주입 하 는 전체 절 차 를 설명 한다.
단점:
refresh 후 먼저 불 러 온 설정 센터 의 모든 zuul 의 최신 K/V 데 이 터 를 불 러 온 다음 에 불 러 온 속성 K/V 주입 규칙 에 따라 ZuulPropeties(Bean)에 불 러 옵 니 다.ZuulPropeties 는 refresh 전에 Bean 용기 에 존재 합 니 다.
따라서 Zuul 경로 규칙 을 추가 하거나 수정 합 니 다.refresh 후 ZuulPropeties 의 속성 값 을 추가 하거나 덮어 씁 니 다.ZuulPropeties 를 조작 하 는 경로 규칙 이 여전히 존재 하기 때문에 삭제 가 잘못 되 었 습 니 다.
장점:
사용 이 간단 합 니 다.설정 창 고 를 바탕 으로 경로 규칙 에 대해 버 전 관 리 를 하고 refresh 터미널 을 밖으로 노출 하면 됩 니 다.
2.RefreshScope 기반 동적 새로 고침
ZuulPropeties 를 확장 하고 RefreshScope 주 해 를 사용 합 니 다.설정 센터 의 경로 규칙 을 수정 한 후 refresh 작업 경로 규칙 을 실행 하면 변경 이 발생 합 니 다.
코드:
@Bean
@ConfigurationProperties("zuul")
@RefreshScope
@Primary
public ZuulProperties zuulProperties() {
return new ZuulProperties();
}
단점:사용자 정의 확장 ZuulPropetties 가 필요 합 니 다.RefreshScope 주 해 를 추가 하 십시오.
장점:
RefreshScope 는 cglib 를 사용 하여 ZuulPropetties 의 대 리 를 만 들 고,1 중 Bean 대상 과 구현 방식 이 다 르 기 때문에 경로 규칙 에 따라 삭제 해도 유효 합 니 다.
3.db 기반 저장 소 동적 새로 고침
Zuul 게 이 트 웨 이 경로 규칙 에 핵심 클래스 Discovery Client RouteLocator 와 Simple RouteLocator 를 불 러 옵 니 다.
Simple RouteLocator 를 확장 하여 locateRoutes()를 다시 불 러 오 는 방법 으로 db 에서 경로 규칙 을 불 러 옵 니 다.트리거 조건 은 refresh 입 니 다.
단점:
확장 이 복잡 하고 맞 춤 형 개발 이 필요 하 며 경로 규칙 의 로드 논 리 를 다시 써 야 합 니 다.
장점:
경로 규칙 변경 을 유연 하 게 제어 하고 업무 장면 과 결합 하여 더 많은 사용자 정의 기능 을 추가 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.