搭建springcloud的demo之zuul网关(十一)

心已赠人 2022-03-01 04:38 371阅读 0赞

zuul

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

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

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

路由的基本配置

新建microservicecloud-zuul-gateway-9527

pom.xml

在这里插入图片描述

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <parent>
  4. <groupId>com.yt.springcloud</groupId>
  5. <artifactId>microservicecloud</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. </parent>
  8. <artifactId>microservicecloud-zuul-gateway-9527</artifactId>
  9. <dependencies>
  10. <!-- zuul路由网关 -->
  11. <dependency>
  12. <groupId>org.springframework.cloud</groupId>
  13. <artifactId>spring-cloud-starter-zuul</artifactId>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.springframework.cloud</groupId>
  17. <artifactId>spring-cloud-starter-eureka</artifactId>
  18. </dependency>
  19. <!-- actuator监控 -->
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-actuator</artifactId>
  23. </dependency>
  24. <!-- hystrix容错 -->
  25. <dependency>
  26. <groupId>org.springframework.cloud</groupId>
  27. <artifactId>spring-cloud-starter-hystrix</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.cloud</groupId>
  31. <artifactId>spring-cloud-starter-config</artifactId>
  32. </dependency>
  33. <!-- 日常标配 -->
  34. <dependency>
  35. <groupId>com.yt.springcloud</groupId>
  36. <artifactId>microservicecloud-api</artifactId>
  37. <version>${project.version}</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-jetty</artifactId>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-starter-web</artifactId>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-starter-test</artifactId>
  50. </dependency>
  51. <!-- 热部署插件 -->
  52. <dependency>
  53. <groupId>org.springframework</groupId>
  54. <artifactId>springloaded</artifactId>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.springframework.boot</groupId>
  58. <artifactId>spring-boot-devtools</artifactId>
  59. </dependency>
  60. </dependencies>
  61. </project>

application.yml

在这里插入图片描述

  1. server:
  2. port: 9527
  3. spring:
  4. application:
  5. name: microservicecloud-zuul-gateway #注册eureka的名字
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  10. instance:
  11. instance-id: gateway-9527.com #改hosts文件
  12. prefer-ip-address: true
  13. info: #可写可不写
  14. app.name: atguigu-microcloud
  15. company.name: www.atguigu.com
  16. build.artifactId: $project.artifactId$
  17. build.version: $project.version$

hosts修改

hosts文件的位置在C:\Windows\System32\drivers\etc\hosts
在这里插入图片描述

  1. 127.0.0.1 eureka7001.com
  2. 127.0.0.1 eureka7002.com
  3. 127.0.0.1 eureka7003.com
  4. 127.0.0.1 myzuul.com

主启动类

在这里插入图片描述

  1. package com.yt.springcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
  5. @SpringBootApplication
  6. @EnableZuulProxy//代理
  7. public class Zuul_9527_StartSpringCloudApp
  8. {
  9. public static void main(String[] args)
  10. {
  11. SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
  12. }
  13. }

启动

  1. 三个eureka集群
  2. 一个服务提供类microservicecloud-provider-dept-8001
  3. 一个路由

测试

网关和微服务注册进入eureka集群:http://localhost:7001/
在这里插入图片描述
不使用路由:http://localhost:8001/dept/get/1
在这里插入图片描述
使用路由:http://myzuul.com:9527/microservicecloud-dept/dept/get/1
microservicecloud-dept是微服务名称

在这里插入图片描述

路由访问映射规则

修改application.yml

在这里插入图片描述

  1. server:
  2. port: 9527
  3. spring:
  4. application:
  5. name: microservicecloud-zuul-gateway #注册eureka的名字
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  10. instance:
  11. instance-id: gateway-9527.com #改hosts文件
  12. prefer-ip-address: true
  13. zuul:
  14. routes:
  15. mydept.serviceId: microservicecloud-dept #key 以前是输入微服务名称
  16. mydept.path: /mydept/** #value 现在是映射到mydept(把真实微服务名称隐藏起来)
  17. info: #可写可不写
  18. app.name: atguigu-microcloud
  19. company.name: www.atguigu.com
  20. build.artifactId: $project.artifactId$
  21. build.version: $project.version$

测试:http://myzuul.com:9527/mydept/dept/get/1

在这里插入图片描述
在这里插入图片描述

只让路由映射的mydept可以访问!!!

编写application.yml

在这里插入图片描述

  1. server:
  2. port: 9527
  3. spring:
  4. application:
  5. name: microservicecloud-zuul-gateway #注册eureka的名字
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  10. instance:
  11. instance-id: gateway-9527.com #改hosts文件
  12. prefer-ip-address: true
  13. zuul:
  14. ignored-services: microservicecloud-dept
  15. routes:
  16. mydept.serviceId: microservicecloud-dept #key 以前是输入微服务名称
  17. mydept.path: /mydept/** #value 现在是映射到mydept(把真实微服务名称隐藏起来)
  18. info: #可写可不写
  19. app.name: atguigu-microcloud
  20. company.name: www.atguigu.com
  21. build.artifactId: $project.artifactId$
  22. build.version: $project.version$

访问测试

在这里插入图片描述
在这里插入图片描述

单个写具体微服务名称,多个可以用”*“

修改application.yml

在这里插入图片描述

  1. server:
  2. port: 9527
  3. spring:
  4. application:
  5. name: microservicecloud-zuul-gateway #注册eureka的名字
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  10. instance:
  11. instance-id: gateway-9527.com #改hosts文件
  12. prefer-ip-address: true
  13. zuul:
  14. #ignored-services: microservicecloud-dept 具体某一个微服务的名称
  15. ignored-services: "*" #所有微服务,批量处理
  16. routes:
  17. mydept.serviceId: microservicecloud-dept #key 以前是输入微服务名称
  18. mydept.path: /mydept/** #value 现在是映射到mydept(把真实微服务名称隐藏起来)
  19. info: #可写可不写
  20. app.name: atguigu-microcloud
  21. company.name: www.atguigu.com
  22. build.artifactId: $project.artifactId$
  23. build.version: $project.version$

设置统一公共前缀

修改application.yml

在这里插入图片描述

  1. server:
  2. port: 9527
  3. spring:
  4. application:
  5. name: microservicecloud-zuul-gateway #注册eureka的名字
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  10. instance:
  11. instance-id: gateway-9527.com #改hosts文件
  12. prefer-ip-address: true
  13. zuul:
  14. #ignored-services: microservicecloud-dept 具体某一个微服务的名称
  15. prefix: /yt #统一前缀名
  16. ignored-services: "*" #所有微服务,批量处理
  17. routes:
  18. mydept.serviceId: microservicecloud-dept #key 以前是输入微服务名称
  19. mydept.path: /mydept/** #value 现在是映射到mydept(把真实微服务名称隐藏起来)
  20. info: #可写可不写
  21. app.name: atguigu-microcloud
  22. company.name: www.atguigu.com
  23. build.artifactId: $project.artifactId$
  24. build.version: $project.version$

测试

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

翻译于尚硅谷周阳老师:https://www.bilibili.com/video/av22613028?from=search&seid=11377756339718254280

发表评论

表情:
评论列表 (有 0 条评论,371人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springcloud学习zuul

    uul网关有路由和过滤器等作用 简单使用路由部分功能: 路由功能:使用户不直接访问服务,而是访问网关,网关在去eureka上拉去服务然后比对用户请求是要请求哪个服务,...

    相关 SpringCloud-zuul

    网关的作用:就相当于整个微服务体系的入口,所有的外部请求都应该通过zuul进行处理,zuul会通过请求url分析应该将请求分发给哪个微服务处理,微服务处理完毕之后,会将结果返回

    相关 springcloud zuul

    网关可以对请求进行过滤拦截,转发等,这种跟过滤器不一样,它可以拦截入口,而不是单独一个服务。 业务场景,会员服务和订单服务,用户必须登录才能调用相关接口(即含有userTok