Zuul是Spring Cloud全家桶中的微服务API网关。
所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:
- 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。
- 性能监测 在服务边界追踪并统计数据,提供精确的生产视图。
- 动态路由 根据需要将请求动态路由到后端集群。
- 压力测试 逐渐增加对集群的流量以了解其性能。
- 负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
- 静态资源处理 直接在边界返回某些响应。
1、创建microservicecloud-zuul-gateway模块
2、pom.xml配置
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zuul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-hystrix-dashboard -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
</dependencies>
3、application.yml配置
server:
port: 9527
eureka:
client:
service-url:
defaultZone: http://www.eureka7001.com:7001/eureka/,http://www.eureka7002.com:7002/eureka/,http://www.eureka7003.com:7003/eureka/ #eureka地址
instance:
instance-id: www.gateway9527.com #修改主机ip名
prefer-ip-address: true #访问路径可以显示IP地址
spring:
application:
name: microservicecloud-zuul-gateway-9527 #配置服务器名
zuul:
routes:
mydept.serviceId: microservicecloud-dept #原来的ID
mydept.path: /cloud/** #配置ID
ignored-services: "*" #禁止所有ID
prefix: kinglove #前缀
# ignored-services: microservicecloud-dept #禁止原来的ID
4、主配置类
@SpringBootApplication
@EnableZuulProxy
public class ApplicationZuulGateway9527 {
public static void main(String[] args) {
SpringApplication.run(ApplicationZuulGateway9527.class,args);
}
}
5、启动测试:
(1)启动eureka集群
(2)启动微服务
(3)启动zuul
(4)用微服务地址访问一下,看看是否正常,下面访问接口没问题
http://localhost:8001/api_content/add?id=29844051842168534466
(5)使用zuul访问看下,http://地址IP:端口/前缀/自己设置的ID/接口
http://localhost:9527/kinglove/cloud/api_content/add?id=29844051842168534466
也是可以访问的