一、概述
Zuul是所有来自设备和网站的请求到Spring Cloud 微服务应用程序后端的门户。作为一个网关服务应用程序,Zuul旨在实现动态路由、监控和安全认证和鉴权,因此它主要提供如下功能。
-
统一入口:为全部为服务提供一个唯一的入口,网关起到外部和内部隔离的作用,保障了后台服务的安全性。
-
鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。
-
动态路由:动态的将请求路由到不同的后端集群中。
-
减少客户端与服务端的耦合:服务可以独立发展,通过网关层来做映射。
二、Demo代码
1.pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
2.自定义Post ZuulFilter
@Component
@Slf4j
public class ResponseResultFilter extends ZuulFilter {
@Override
public String filterType() {
return FilterConstants.POST_TYPE;
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
int statusCode = ctx.getResponseStatusCode();
log.info(String.valueOf(statusCode));
return null;
}
}
3.Application 启动类添加 @EnableZuulProxy 注解
4.添加路由配置
zuul:
routes:
user-service:
url: http://localhost:8080/user-service/
path: /user-service/**
retrable: false