Zuul 路由网关
官方文档:https://github.com/Netflix/zuul/wiki
什么是Zuul?
路由是微服务架构不可或缺的一部分。例如,/
可能被映射到您的web应用程序,/api/users
被映射到用户服务,/api/shop
被映射到商店服务。 Zuul是Netflix的基于JVM的路由器和服务器端负载平衡器。
Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
注意: Zuul服务最终还是会注册进Eureka
提供: 代理+路由+过滤三大功能!
实战练习
新建 springcloud-zuul-9527 模块,将 dashboard 的依赖复制过来。
导入 Zuul 的依赖
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-zuul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
配置文件
server:
port: 9527
spring:
application:
name: springcloud-zuul-gateway
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: zuul9527.com
prefer-ip-address: true
info:
app.name: mianbao-springcloud
company.name: mianbao.com
主机映射
C:\Windows\System32\drivers\etc\hosts
新增映射地址
127.0.0.1 www.mianbao.com
主启动类
/**
* @desc
* @auth llp
* @date 2022年03月04日 11:01
*/
@SpringBootApplication
@EnableZuulProxy // 开启Zuul
public class ZuulApplication_9527 {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication_9527.class, args);
}
}
启动 7001、8001、9527项目测试。
访问:http://localhost:8001/dept/list 查询数据。
启动了Zuul后,访问路由: http://www.mianbao.com:9527/spring-provider-dept/dept/list 也能查到数据。
这就将真实的地址隐藏了,但是微服务的名字spring-provider-dept
还是暴露出来了。
新增 Zuul 的配置
# zuul 配置
zuul:
routes:
mydept.path: /mydept/**
mydept.serviceId: spring-provider-dept
ignored-services: spring-provider-dept # 不能使用这个路由访问
# ignoredServices: '*' 除 /mydept 外,隐藏全部服务
prefix: /mianbao # 配置公共的前缀
重启项目,访问地址:http://www.mianbao.com:9527/mydept/dept/get/2 也能查到数据。