SpringCloud-Zuul路由网关
Zuul说明
Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
Zuul网关不是必要的。是推荐使用的
使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。
网关有以下几个作用:
- 统一入口:未全部为服务提供一个唯一的入口,网关起到外部和内部隔离的作用,保障了后台服务的安全性
- 鉴权校验:识别每个请求的权限,拒绝不符合要求的请求
- 动态路由:动态的将请求路由到不同的后端集群中
- 减少客户端与服务端的耦合:服务可以独立发展,通过网关层来做映射

Zuul的使用
由于我们使用的是同一台设备,所以配置一下hosts文件进行域名映射,新增一个域名来作为我们的zuul服务器,hosts文件所在路径:C:\Windows\System32\drivers\etc

新建springcloud-zuul-9527模块

Maven依赖
<!--Zuul依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
application.yml
server:
port: 9527
spring:
application:
name: spring-cloud-zuul
#Eureka的配置
eureka:
client:
service-url:
defaultZone: http://Eureka-Server1:7001/eureka/,http://Eureka-Server2:7002/eureka/
instance:
instance-id: zuul9527.com
prefer-ip-address: true #显示IP
# zull 路由网关配置
zuul:
# 路由相关配置
# 原来访问路由: zuul访问地址 + 服务注册名称(必须小写) + 请求
# eg:http://www.zuul9527.com:9527/springcloud-provider-dept/get
# 添加以下zull路由配置后访问路由,就把我们的服务名称给隐藏掉
# eg:http://www.zuul9527.com:9527/mydept/get
routes:
mydept.serviceId: springcloud-provider-user # eureka注册中心的服务提供方路由名称
mydept.path: /mydept/** # 将eureka注册中心的服务提供方路由名称 改为自定义路由名称
# 但是如果只做以上配置的话,我们除了zuul是还可以使用服务注册名称来进行访问的,所以我们还需要添加以下配置
# 通过以下配置,使我们不能再使用springcloud-provider-dept服务注册名称来进行访问,*: 忽略,隐藏全部的服务名称~
ignored-services: "*"
# 设置公共的前缀,设置过后的访问地址 eg:http://www.zuul9527.com:9527/haust/mydept/get
prefix: /haust
启动类
@SpringBootApplication @EnableZuulProxy public class SpringcloudZuul9527Application { public static void main(String[] args) { SpringApplication.run(SpringcloudZuul9527Application.class, args); } }
启动Eureka、zuul、服务提供者
访问Eureka可以看到我们的zuul服务

此时我们就可以通过zuul服务路由到我们的服务了,统一了入口,可以看到,URL也隐藏掉了我们的服务名称

浙公网安备 33010602011771号