spring zuul 예제

항상 그렇듯이 이 문서에서 사용되는 예제에 대한 코드는 Github에서 찾을 수 있습니다. 라우팅은 마이크로 서비스 아키텍처의 필수적인 부분입니다. 예를 들어, / 귀하의 웹 애플리케이션에 매핑될 수 있고, /api/users는 사용자 서비스에 매핑되고/api/shop은 상점 서비스에 매핑된다. 줄은 넷플릭스에서 JVM 기반 의 라우터와 서버 측 로드 밸레인저입니다. 기본적으로 스프링 부팅 액추에이터에서 @EnableZuulProxy 사용하는 경우 두 개의 추가 끝점을 활성화합니다. 우리는 봄 콩으로 등록해야합니다. 축! Spring을 사용하여 마이크로 서비스에 대한 요청을 프록시하고 필터링할 수 있는 에지 서비스 응용 프로그램을 개발했습니다. 이 문제를 해결하기 위해 Netflix는 줄 서버를 만들고 나중에 오픈 소스로 만들었습니다. 스프링은 스프링 스택에 쉽게 통합 할 수 있도록 주변에 좋은 래퍼를 제공했습니다.

넷플릭스 줄과 스프링 클라우드와의 견고한 결합을 사용하여 로드 밸러블러를 만드는 방법을 알아보십시오. 여기서우리는 주로 API 게이트웨이 패턴에 집중하고 그것의 사용이다. 우리는 마이크로 서비스 생태계를 만들고 전체 생태계에서 Zuul API 게이트웨이의 효과와 적용 가능성을 테스트할 Netflix zuul 예제를 구축할 것입니다. 파일에서 두 번째로 마지막까지의 속성에 주의: 스프링 클라우드 넷플릭스 줄은 클라이언트 측 부하 분산을 수행하기 위해 넷플릭스의 리본을 사용하고, 기본적으로 리본은 서비스 검색에 Netflix Eureka를 사용합니다. 이 간단한 예제에서는 서비스 검색을 건너뛰고 있으므로 ribbon.eureka.enabled를 false로 설정했습니다. 이제 리본은 유레카를 사용하여 서비스를 조회할 수 없으므로 Book 서비스에 대한 URL을 지정해야 합니다. Zuul에서 지정된 경로에 대한 회로가 트립되면 대체 공급자 형식의 빈을 만들어 대체 응답을 제공할 수 있습니다. 이 bean 내에서 대체에 대 한 경로 ID를 지정 하 고 대체로 반환 하는 ClientHttpResponse를 제공 해야 합니다. 다음 예제에서는 비교적 간단한 FallbackProvider 구현을 보여 주었습니다. 다시 한번 봄 초기화와 함께 새로운 프로젝트를 만들어 보자. 원하는 버전의 Spring Boot버전을 선택하고 „게이트웨이“ 및 „유레카 디스커버리“ 종속성을 추가하고 Maven 프로젝트로 생성합니다: 여기 zuul.route.student.url은 모든 트래픽을 실제 학생 서비스 서버로 요청하도록 라우팅합니다.

이렇게 하면 다른 서비스에도 경로를 추가할 수 있습니다. ribbon.eureka.enabled는 줄과 자동 통합됩니다. server.port – 기본 포트를 재정의하는 데 필요한데, 로컬 호스트에서 다른 마이크로 서비스의 여러 인스턴스가 실행됩니다. 스프링 클라우드 넷플릭스는 @EnableZuulProxy 개의 어노뮬을 사용할 수 있는 임베디드 줄 프록시를 포함하고 있습니다. 이렇게 하면 게이트웨이 응용 프로그램이 당사의 Book 서비스와 같은 다른 서비스— 관련 호출을 전달하는 역방향 프록시로 전환됩니다. 앞의 예제는 /myusers에 대한 HTTP 호출이 사용자 서비스로 전달된다는 것을 의미합니다(예: /myusers/101은 /101로 전달됩니다). 이 값은 sensitiveHeaders의 기본값이므로 다른 값을 원하지 않는 한 설정할 필요가 없습니다. 이것은 스프링 클라우드 넷플릭스 1.1의 새로운 기능입니다 (1.0에서 사용자는 헤더를 제어 할 수 없었으며 모든 쿠키가 양방향으로 흐르었습니다). 스프링은 또한 스프링 클라우드 게이트웨이라는 자신의 라우터를 발표했다. 비차단 API를 가지고 있으며 WebSocket과 같은 수명이 긴 연결을 지원합니다.

com.netflix.zuul.exception.Zuul예외: 로컬 호스트에 연결:8090 [localhost/127.0.0.1, localhost/0:0:0:0:0:1] 실패: 연결 거부: 연결 속성 zuul.max.host.connections 두 개의 새 속성으로 대체 되었습니다. , zuul.host.maxTotalConnections 및 zuul.host.maxPerRouteConnections, 기본값은 각각 200 및 20입니다. 위의 예제는 /myusers에 대한 HTTP 호출이 users_service 서비스로 전달된다는 것을 의미합니다. 경로에는 개미 스타일 패턴으로 지정할 수 있는 경로가 있어야 하므로 /myusers/*는 한 수준만 일치하지만 /myusers/**는 계층적으로 일치합니다.