前言:
在微服务架构中的两大核心就是注册中心和路由网关,此篇介绍的就是springclloud netfix中负责路由网关的组件,zuul
一,什么是zuul
zuul包含了对请求的路由和过滤两个主要功能
其中路由和功能负责外部请求转发到具体服务实例上,是实现外部统一入口的基础,而过滤功能负责对请求的处理过程进行干预,实现请求校验,服务聚合等功能的基础;
zuul对Eureka进行整合,将zuul自身注册为eureka服务治理下的应用,同时从eureka获得其他服务的信息,就是说消费者获取服务是要先通过zuul跳转获得
总结:
zuul将eureka管理的微服务又封装了一层,所有消费者要获取服务都要通过zuul去转发,因此客户端是得不到真实的服务地址的,客户端访问的是指定服务zuul地址,提高了系统的安全性
通俗的说Zuul属于服务提供者,只不过提供的是路由网关的服务
二,配置zuul
新建一个服务用来实现zuul
导入相关依赖
<dependencies> <!--zuul,路由网关--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--hystrix--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--dashboard流监控--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--ribbon=负载均衡--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--eureka,注册中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--实体类+web--> <dependency> <groupId>com.king</groupId> <artifactId>springcloud-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
yaml配置
server:
port: 9527
#微服务id
spring:
application:
name: spring-zuul
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
#实例id
instance:
instance-id: zuul9527.com
#显示ip
prefer-ip-address: true
#zuul
zuul:
routes:
mydept.serviceId: springcloud-provider-dept
mydept.path: /mydept/**
ignored-services: "*" #不能在使用这个路径访问了,ignored:忽略,隐藏全部的真实项目地址
# prefix: 设置统一的前缀
info:
app.name: springCloud-zuul-gateway
company.name: king
主启动类配置,@EnableZuulProxy //开启网关代理
@SpringBootApplication @EnableZuulProxy //开启网关代理 public class ZuulApplication_9527 { public static void main(String[] args) { SpringApplication.run(ZuulApplication_9527.class,args); } }
总环:zuul可以简单理解为在众多微服务外面又包裹了一层,同时屏蔽内部细节,封装的思想