SpringCloud-Netflix学习笔记13——Zuul路由网关
创始人
2024-05-25 11:56:42
0

什么是Zuul?

  Zuul包含了对请求的路由和过滤两个最主要的功能。

  其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

  注意:Zuul服务最终还是会注册进Eureka。

  提供:代理 + 路由 + 过滤 三大功能!

Zuul能干嘛

  • 路由
  • 过滤

  官网文档:https://github.com/Netflix/zuul

Zuul路由的基本配置

  1、新建一个子模块 springcloud-zuul-9527,并且添加依赖,依赖如下(其中Zuul 和 Eureka依赖是必要的):

    org.springframework.cloudspring-cloud-starter-zuul1.4.7.RELEASEorg.springframework.cloudspring-cloud-starter-hystrix1.4.7.RELEASEorg.springframework.cloudspring-cloud-starter-hystrix-dashboard1.4.7.RELEASEorg.springframework.cloudspring-cloud-starter-ribbon1.4.7.RELEASEorg.springframework.cloudspring-cloud-starter-eureka1.4.7.RELEASEcom.tangspringcloud-api1.0-SNAPSHOTorg.springframework.bootspring-boot-starter-web

  2、编写配置文件,端口为 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.cn

  3、编写主启动类,添加注解 @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路由网关,通过网关进行路由或者拦截,配置十分方便!

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...