什么是Zuul?
Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合, 将ZuuI自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
注意: Zuul服务最终还是会注册进Eureka
提供:代理+路由+过滤三大功能!
Zuul能干嘛?
●路由
●过滤
代码:
1.新建Module,springcloud-zuul-9527。
2.复制springcloud-consumer-hystrix-dashboard里面的依赖到springcloud-zuul-9527并新增zuul依赖。
<!-- zuul --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> <version>2.1.1.RELEASE</version> </dependency>
3.配置application.yml
server: port: 9527 spring: application: name: springcloud-zuul eureka: client: service-url: defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/ instance: instance-id: zuul9527.com prefer-ip-address: true info: app.name: allen-springcloud company.name: blog.allen.com
4.配置主启动类。
package com.allen.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @SpringBootApplication @EnableZuulProxy public class ZuulApplication_9527 { public static void main(String[] args) { SpringApplication.run(ZuulApplication_9527.class, args); } }
5.启动测试
可以通过9527和服务名称来直接访问。
但是这样也出现了问题,我们暴露了微服务的名称,接下来我们配置zuul隐藏微服务的真实名称。
zuul: routes: mydept.serviceId: springcloud-provider-dept mydept.path: /mydept/** #ignored-services: springcloud-provider-dept #不能使用这个路径访问了 ignored-services: "*" #隐藏全部原有微服务名称 prefix: /allen #设置统一的前缀
接下来重启服务,进行测试。
这样就可以根据自己定义的名称进行调用接口了。