深圳手机商城网站设计电话,wordpress侧滑菜单,金融网站设计方向,能免费观看所有电视剧的app什么是Zuul? Zuul包含了对请求的路由和过滤两个最主要的功能。 其中路由功能负责将外部请求转发到具体的微服务实例上#xff0c;是实现外部访问统一入口的基础#xff0c;而过滤器功能则负责对请求的处理过程进行干预#xff0c;是实现请求校验#xff0c;服务聚合等功能…什么是Zuul? Zuul包含了对请求的路由和过滤两个最主要的功能。 其中路由功能负责将外部请求转发到具体的微服务实例上是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预是实现请求校验服务聚合等功能的基础。Zuul和Eureka进行整合将Zuul自身注册为Eureka服务治理下的应用同时从Eureka中获得其他微服务的消息也即以后的访问微服务都是通过Zuul跳转后获得。 注意Zuul服务最终还是会注册进Eureka。 提供代理 路由 过滤 三大功能
Zuul能干嘛
路由过滤 官网文档https://github.com/Netflix/zuul
Zuul路由的基本配置 1、新建一个子模块 springcloud-zuul-9527并且添加依赖依赖如下其中Zuul 和 Eureka依赖是必要的 !--实体类 web--dependencies!--zuul路由--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-zuul/artifactIdversion1.4.7.RELEASE/version/dependency!--hystrix--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-hystrix/artifactIdversion1.4.7.RELEASE/version/dependency!--hystrix监控依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-hystrix-dashboard/artifactIdversion1.4.7.RELEASE/version/dependency!--Ribbon--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-ribbon/artifactIdversion1.4.7.RELEASE/version/dependency!--eureka服务提供者或者客户端用这个包--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka/artifactIdversion1.4.7.RELEASE/version/dependencydependencygroupIdcom.tang/groupIdartifactIdspringcloud-api/artifactIdversion1.0-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies2、编写配置文件端口为 9527并且Zuul会以服务注册进Eureka 所以一些Eureka的配置也必不可少如下
server:port: 9527# 应用名称即该微服务的名称
spring:application:name: springcloud-zuul# Eureka服务提供者的配置服务注册到哪里即注册中心的地址(搭建集群情况下)
eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: springcloud-zuul-9527 # Eureka服务监控页面的Status,不配置的话会有默认值prefer-ip-address: true # 为true,可以显示服务主机所在的ip,而不是默认的localhost
# 配置监控信息即Status那个页面的信息
info:aap.name: tangshihua-springcloudcompany.name: org.tang.cn3、编写主启动类添加注解 EnableZuulProxy 开启Zuul路由这里需要说明的是用这个注解就能将该服务注册进Eureka了不用加EnableEurekaClient注解代码如下
SpringBootApplication
EnableZuulProxy //开启Zuul路由代理用这个注解就能将该服务注册进Eureka了不用加EnableEurekaClient注解
public class ZuulApplication_9527 {public static void main(String[] args) {SpringApplication.run(ZuulApplication_9527.class, args);}
}4、开启 ZuulApplication_9527、springcloud-provider-dept-hystrix-8001、springcloud-eureka-7001进行测试。可以看到Zuul被当成一个微服务注册进了 Eureka 此时我们直接访问8001端口的地址http://localhost:8001/dept/queryDeptById/2 可以获取服务 我们也可以通过Zuul路由9527的地址对8001的服务进行访问地址要加上服务名 springcloud-provider-dept小写 我的为什么不是 localhost而是 www.tangshihua.com 呢因为我在 hosts 文件中做了映射如下 文件地址在左上角。
请求拦截 如果我们直接以服务名进行访问的话就会暴露我们的微服务信息很不安全所以我们可以用一个自己定义的名字来替换掉访问地址中的微服务名字在配置文件中配置即可如下
zuul:routes:# 将访问链接中的微服务名称可以换成mydept方便隐藏信息mydept.serviceId: springcloud-provider-deptmydept.path: /mydept/**现在我们不仅可以通过微服务名称访问服务也可以通过mydept访问微服务如下 虽然可以通过mydept访问微服务但是通过微服务名称还是可以访问微服务我们可以直接配置让通过微服务名称直接访问不了微服务配置如下
zuul:ignored-services: springcloud-provider-dept # 不能在使用这个路径访问了效果如下 如果有很多微服务需要隐藏的话可以用通配符 * 配置如下
zuul:ignored-services: * # 隐藏全部的真实路径因为微服务可能有很多个不可能把所有名称都写进来直接用通配符效果是一样的这里就不重复演示了。 我们除了拦截请求之外还可以对访问路径进行一些配置比如加个前缀之类的如下
zuul:prefix: /tang # mydept前面需要加一个/tang前缀才能正常访问现在要访问微服务的话需要在地址上加一个前缀 /tang 才能正常访问如果不加就访问不了效果如下 总结 用户请求首先进入Zuul路由网关通过网关进行路由或者拦截配置十分方便