Spring Cloud Zuul 경로 규칙 동적 업데이트 분석

이 글 은 주로 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 입 니 다.
단점:
확장 이 복잡 하고 맞 춤 형 개발 이 필요 하 며 경로 규칙 의 로드 논 리 를 다시 써 야 합 니 다.
장점:
경로 규칙 변경 을 유연 하 게 제어 하고 업무 장면 과 결합 하여 더 많은 사용자 정의 기능 을 추가 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기