• SpringCloudGateway--自动路由映射


    目录

    一、自动路由映射

    1、GateWay项目创建

    2、子项目创建

    3、测试调用

    二、手动路由配置

    1、手动路由配置

    一、自动路由映射

    1、GateWay项目创建

            首先启动本地nacos,具体可参考:Nacos Windows安装_雨欲语的博客-CSDN博客

            新建工程项目spring_cloud_test,pom引入依赖:

    1. <parent>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-parentartifactId>
    4. <version>2.5.6version>
    5. <relativePath/>
    6. parent>
    7. <modelVersion>4.0.0modelVersion>
    8. <artifactId>spring_cloud_gatewayartifactId>
    9. <properties>
    10. <maven.compiler.source>8maven.compiler.source>
    11. <maven.compiler.target>8maven.compiler.target>
    12. properties>
    13. <dependencies>
    14. <dependency>
    15. <groupId>com.alibaba.cloudgroupId>
    16. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    17. dependency>
    18. <dependency>
    19. <groupId>org.springframework.cloudgroupId>
    20. <artifactId>spring-cloud-starter-openfeignartifactId>
    21. dependency>
    22. <dependency>
    23. <groupId>org.springframework.cloudgroupId>
    24. <artifactId>spring-cloud-starter-loadbalancerartifactId>
    25. dependency>
    26. <dependency>
    27. <groupId>org.springframework.cloudgroupId>
    28. <artifactId>spring-cloud-starter-gatewayartifactId>
    29. dependency>
    30. dependencies>

             创建启动类:

    1. import org.springframework.boot.SpringApplication;
    2. import org.springframework.boot.autoconfigure.SpringBootApplication;
    3. @SpringBootApplication
    4. public class GatewayApplication {
    5. public static void main(String[] args) {
    6. SpringApplication.run(GatewayApplication.class, args);
    7. }
    8. }

            新建配置文件:

    1. server:
    2. port: 9999
    3. spring:
    4. application:
    5. name: service-gateway
    6. cloud: # 配置Spring Cloud相关属性
    7. gateway:
    8. discovery: # 配置网关发现机制
    9. locator: # 配置处理机制
    10. # 只要请求地址符合规则: http://gatewayIP:gatewayPort/微服务名称/微服务请求地址
    11. # 网关自动映射。把请求转发到 http://微服务名称/微服务请求地址
    12. # 如:有微服务,命名是service-one
    13. # 请求地址是: http://localhost:9999/service-one/nacos/test
    14. # 自动转发到: http://service-one/nacos/test
    15. # 商业开发中,enabled一般不设置,使用默认值false。避免不必要的自动转发规则。
    16. enabled: false # 开启网关自动映射处理逻辑
    17. lower-case-service-id: true # 开启小写转换
    18. nacos:
    19. # nacos用户名和密码
    20. username: nacos
    21. password: nacos
    22. discovery:
    23. # nacos地址
    24. server-addr: 127.0.0.1
    25. group: dev
    26. namespace: dev
    27. metadata:
    28. version: v1.0.0

             启动项目,然后在nacos中可看见服务注册成功:

      

    2、子项目创建

            新建子项目service_one,service_two。

            pom引入依赖:

    1. <parent>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-parentartifactId>
    4. <version>2.5.6version>
    5. <relativePath/>
    6. parent>
    7. <modelVersion>4.0.0modelVersion>
    8. <artifactId>service_oneartifactId>
    9. <properties>
    10. <maven.compiler.source>8maven.compiler.source>
    11. <maven.compiler.target>8maven.compiler.target>
    12. properties>
    13. <dependencies>
    14. <dependency>
    15. <groupId>org.springframework.bootgroupId>
    16. <artifactId>spring-boot-starter-webartifactId>
    17. dependency>
    18. <dependency>
    19. <groupId>org.springframework.bootgroupId>
    20. <artifactId>spring-boot-devtoolsartifactId>
    21. <scope>runtimescope>
    22. <optional>trueoptional>
    23. dependency>
    24. <dependency>
    25. <groupId>org.projectlombokgroupId>
    26. <artifactId>lombokartifactId>
    27. <optional>trueoptional>
    28. dependency>
    29. <dependency>
    30. <groupId>org.springframework.bootgroupId>
    31. <artifactId>spring-boot-starter-testartifactId>
    32. <scope>testscope>
    33. dependency>
    34. <dependency>
    35. <groupId>com.alibaba.cloudgroupId>
    36. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    37. dependency>
    38. dependencies>

            启动类:

    1. import org.springframework.boot.SpringApplication;
    2. import org.springframework.boot.autoconfigure.SpringBootApplication;
    3. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    4. @SpringBootApplication
    5. @EnableDiscoveryClient
    6. public class OneApplication {
    7. public static void main(String[] args) {
    8. SpringApplication.run(OneApplication.class, args);
    9. }
    10. }

           controller:

    1. import org.springframework.web.bind.annotation.GetMapping;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. import org.springframework.web.bind.annotation.RestController;
    4. @RestController
    5. @RequestMapping("/nacos")
    6. public class NacosTestController {
    7. @GetMapping("/test")
    8. public String test(){
    9. return "8080";
    10. }
    11. }

            配置文件:

    1. server:
    2. port: 8080
    3. spring:
    4. application:
    5. name: service-one
    6. cloud:
    7. nacos:
    8. username: nacos
    9. password: nacos
    10. discovery:
    11. enabled: true
    12. register-enabled: true
    13. server-addr: 127.0.0.1
    14. group: dev
    15. namespace: dev
    16. metadata:
    17. version: v1.0.0

            另外一个服务同理,只是换一个port,然后启动,可在nacos看见服务已注册上去:

    3、测试调用

            本地调用:http://localhost:9999/service-one/nacos/test

             可以看见由gateway进行了自动转发,并且是轮询进行。

    二、手动路由配置

    1、手动路由配置

            手动路由配置其余操作与自动路由配置一样,只是配置文件进行修改:

    1. server:
    2. port: 9999
    3. spring:
    4. application:
    5. name: service-gateway
    6. cloud: # 配置Spring Cloud相关属性
    7. gateway:
    8. discovery: # 配置网关发现机制
    9. locator: # 配置处理机制
    10. # 只要请求地址符合规则: http://gatewayIP:gatewayPort/微服务名称/微服务请求地址
    11. # 网关自动映射。把请求转发到 http://微服务名称/微服务请求地址
    12. # 如:有微服务,命名是service-one
    13. # 请求地址是: http://localhost:9999/service-one/nacos/test
    14. # 自动转发到: http://service-one/nacos/test
    15. # 商业开发中,enabled一般不设置,使用默认值false。避免不必要的自动转发规则。
    16. enabled: false # 开启网关自动映射处理逻辑
    17. lower-case-service-id: true # 开启小写转换
    18. routes: # 配置网关中的一个完整路由,包括命名,地址,谓词集合(规则),过滤器集合
    19. - id: service-one # 路由定义的命名,唯一即可。命名规则符合Java中的变量符命名规则
    20. uri: lb://service-one # 当前路由定义对应的微服务转发地址,lb - 代表loadbalance
    21. # 谓词/谓词,命名是有一定规则。是GatewayPredicate接口实现的命名前缀,XxxRoutePredicateFactory
    22. predicates: # 配置谓词集合
    23. - Path=/service/** # 定义一个谓词。格式: 谓词名字=参数 或者 name: 名字 args: 参数
    24. filters:
    25. # 过滤转发地址前缀, 过滤1节
    26. # 如: 请求地址 - http://localhost:9999/service/nacos/test
    27. # 对应的谓词, 规则是 /service,符合
    28. # 对应的uri是 lb://service-one 转换成 http://service-one 且包含负载均衡
    29. # 转发地址是: http://service-one/service/nacos/test
    30. # 过滤器是 过滤转发地址前缀, 过滤1节, 即删除 /service -> http://service-one/nacos/test
    31. - StripPrefix=1
    32. metadata:
    33. connect-timeout: 15000 #ms
    34. response-timeout: 15000 #ms
    35. nacos:
    36. username: nacos
    37. password: nacos
    38. discovery:
    39. server-addr: 127.0.0.1
    40. group: dev
    41. namespace: dev
    42. metadata:
    43. version: v1.0.0

            需要注意的是开启手动,建议是建自动路由配置关闭,此时访问:http://localhost:9999/service/nacos/test即可实现与自动路由配置一样的效果。

  • 相关阅读:
    【Jmeter 简单使用】
    ctfshow web29-web40
    docker安装部署skywalking
    YOLOv5/YOLOv7损失函数改进:SlideLoss创新升级,结合IOU动态调整困难样本的困难程度,提升小目标、遮挡物性能
    【Hack The Box】linux练习-- Bashed(未完)
    【C++】拷贝对象时,编译器的偷偷优化
    期货期权基础知识
    什么是电感?
    【无标题】
    2023年中职组“网络安全”赛项 云南省竞赛任务书
  • 原文地址:https://blog.csdn.net/qq_41061437/article/details/127984408