Spring - Cloud - 제5 장 - 루트 스위치 (zuul)
6208 단어 SpringCloud
마이크로 서비스 구조 에서 몇 가지 기본 적 인 서비스 관리 구성 요소 가 필요 하 다. 이 는 서비스 등록 과 발견, 서비스 소비, 부하 균형, 차단기, 스마트 경로, 배치 관리 등 을 포함한다. 이 몇 가지 기초 구성 요소 가 서로 협력 하여 간단 한 마이크로 서비스 시스템 을 공동으로 구성 했다.다음 그림 과 같은 간단 한 마이크로 서비스 시스템
주의: A 서비스 와 B 서 비 스 는 서로 호출 할 수 있 습 니 다. 그림 을 그 릴 때 잊 어 버 렸 습 니 다.또한 서비스 설정 도 서비스 등록 센터 에 등록 되 어 있 습 니 다.
Spring Cloud 마이크로 서비스 시스템 에서 흔히 볼 수 있 는 부하 균형 방식 은 클 라 이언 트 의 요청 이 먼저 부하 균형 (zuul, Ngnix) 을 거 쳐 서비스 게 이 트 웨 이 (zuul 군집) 에 도착 한 다음 에 구체 적 인 서버 에 도착 하 는 것 이다.서 비 스 는 사용 가능 한 서비스 등록 센터 클 러 스 터 에 통일 적 으로 등록 되 어 있 으 며, 서비스의 모든 프로필 은 설정 서비스 관리 (다음 글 설명) 에 의 해 설정 되 어 있 으 며, 서 비 스 를 설정 하 는 프로필 은 git 창고 에 두 어 개발 자 들 이 수시로 설정 을 바 꿀 수 있 도록 합 니 다.
1. Zuul 안내
Zuul 의 주요 기능 은 퍼 가기 와 필터 입 니 다.경로 기능 은 마이크로 서비스의 일부분 입 니 다. 예 를 들 어/api/user 는 user 서비스 로 전송 하고/api/shop 은 shop 서비스 로 전송 합 니 다.zuul 은 기본적으로 Ribbon 과 결합 하여 부하 균형 기능 을 실현 했다.
zuul 은 다음 과 같은 기능 이 있 습 니 다.
준비 작업
지난 절의 공 사 를 계속 사용 하 다.기 존 프로젝트 에 새 프로젝트 를 만 듭 니 다.
3. 서비스 - zuul 프로젝트 만 들 기
pom. xml 파일 은 다음 과 같 습 니 다.
4.0.0
com.forezp
service-zuul
0.0.1-SNAPSHOT
jar
service-zuul
Demo project for Spring Boot
com.forezp
sc-f-chapter5
0.0.1-SNAPSHOT
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-zuul
입구 application 클래스 에 주석 @ EnableZuulProxy 를 추가 하여 zuul 기능 을 엽 니 다.
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
@EnableDiscoveryClient
public class ServiceZuulApplication {
public static void main(String[] args) {
SpringApplication.run( ServiceZuulApplication.class, args );
}
}
프로필 application. yml 에 다음 설정 코드 를 추가 합 니 다.
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8769
spring:
application:
name: service-zuul
zuul:
routes:
api-a:
path: /api-a/**
serviceId: service-ribbon
api-b:
path: /api-b/**
serviceId: service-feign
우선 서비스 등록 센터 의 주 소 를 지정 합 니 다.http://localhost:8761/eureka/서비스의 포트 는 8769 이 고 서비스 이름 은 서비스 - zuul 입 니 다./api - a/로 시작 하 는 요청 은 모두 service - ribbon 서비스 에 전달 합 니 다./api - b/로 시작 하 는 요청 은 모두 service - fegn 서비스 에 전달 합 니 다.
이 다섯 개의 공 사 를 순서대로 운행 하 다.브 라 우 저 접근 열기:http://localhost:8769/api-a/hi?name=forezp ;브 라 우 저 디 스 플레이:
hi forezp,i am from port:8762
브 라 우 저 접근 열기:http://localhost:8769/api-b/hi?name=forezp ;브 라 우 저 디 스 플레이:
hi forezp,i am from port:8762
이것 은 zuul 이 경로 의 역할 을 했다 는 것 을 설명 한다.
서비스 필터
zuul 은 경로 뿐만 아니 라 여과 도 할 수 있 고 안전 검증 도 할 수 있 습 니 다.계속 개조 공사;
@Component
public class MyFilter extends ZuulFilter {
private static Logger log = LoggerFactory.getLogger(MyFilter.class);
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
Object accessToken = request.getParameter("token");
if(accessToken == null) {
log.warn("token is empty");
ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(401);
try {
ctx.getResponse().getWriter().write("token is empty");
}catch (Exception e){}
return null;
}
log.info("ok");
return null;
}
}
이 때 접근:http://localhost:8769/api-a/hi?name=forezp ;웹 페이지 표시:
token is empty
방문 하 다. http://localhost:8769/api-a/hi?name=forezp&token=22 ; 웹 페이지 표시:
hi forezp,i am from port:8762
본문 원본 다운로드: https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter5
5. 참고 자료:
http://blog.csdn.net/forezp/article/details/69939114
http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html
저작권 성명: 본 고 는 블 로 거들 의 오리지널 글 입 니 다. 전 재 를 환영 합 니 다. 전 재 는 작가, 원문 하이퍼링크, 블 로 거들 주 소 를 밝 혀 주 십시오.http://blog.csdn.net/forezp. https://blog.csdn.net/forezp/article/details/81041012
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringCloud OAuth2 + JWT 인증 인증(一) 인증 서버Spring Cloud oAuth2(1) 라이센스 서버 구축 및 액세스 Spring Cloud oAuth2(2) 리소스 서버 구축 및 테스트 SpringCloud OAuth2 + JWT 인증 인증(一) 인증 서버 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.