Zuul路由网关
1.是什么
Zuul是一种提供动态路由、监视、弹性、安全性等功能的边缘服务。
一个基于JVM和服务端的负载均衡器
主要的功能包括:
代理+路由+过滤
2.能干啥
路由:
过滤:过滤访问服务端的请求
负载均衡:网关是整个服务端的入口,由网关与服务器进行交互,所以网关必须要实现负载均衡的功能;
通过负载均衡算法来选择访问的服务器
3.模块搭建
1.POM
<dependencies>
<!--gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<dependency>
<groupId>com.study</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--一般基础配置类-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.YML
server:
port: 9527
spring:
application:
name: cloud-zuul-gateway
eureka:
client:
service-url:
#defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: gateway-9527.com
prefer-ip-address: true
修改本地/etc/hosts文件
添加
127.0.0.1 myzuul.com
主启动类
@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp
{
public static void main(String[] args)
{
SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
}
}
使用路由的好处:
1.路由会降低暴露服务器ip风险
2.通过路由的负载均衡能够降低服务器的访问压力
ZuulFilter的生命周期
1.pre filter 在请求被路由到目标服务器前执行,比如权限校验,打印日志
2.ruting :请求被路由到目标服务器时执行
3.post: 在请求被路由到目标服务器后执行,比如给目标服务器的响应添加头信息,收集统计数据等功能
4.erro 请求在其他节点发生错误时执行