• Spring Cloud Alibaba 使用Gateway作为服务网关


    为什么使用Gateway

    从没有网关的角度来看后台如有N个服务,那么前端则需要对接N个服务;只要后台修改IP或者端口等任何信息那么前端也需要修改。
    当服务对接了网关后前端只需要统一调用网关入口即可,具体调用那个服务,IP地址或者端口号是多少前端无需关注由网关处理。

    搭建网关服务

    创建普通SpringBoot工程(spring-cloud-alibaba-gateway)该工程当前用于搭建微服务网关pom.xml

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <parent>
    7. <groupId>com.giteegroupId>
    8. <artifactId>spring-cloud-alibaba-version-parentartifactId>
    9. <version>0.0.1version>
    10. parent>
    11. <groupId>com.gitee.example.gatewaygroupId>
    12. <artifactId>spring-cloud-alibaba-gatewayartifactId>
    13. <version>0.0.1version>
    14. <packaging>jarpackaging>
    15. <dependencies>
    16. <dependency>
    17. <groupId>org.springframework.cloudgroupId>
    18. <artifactId>spring-cloud-starter-bootstrapartifactId>
    19. dependency>
    20. <dependency>
    21. <groupId>org.springframework.cloudgroupId>
    22. <artifactId>spring-cloud-starter-openfeignartifactId>
    23. dependency>
    24. <dependency>
    25. <groupId>org.springframework.cloudgroupId>
    26. <artifactId>spring-cloud-starter-gatewayartifactId>
    27. dependency>
    28. <dependency>
    29. <groupId>org.springframework.cloudgroupId>
    30. <artifactId>spring-cloud-loadbalancerartifactId>
    31. dependency>
    32. <dependency>
    33. <groupId>org.springframework.bootgroupId>
    34. <artifactId>spring-boot-starter-webfluxartifactId>
    35. dependency>
    36. <dependency>
    37. <groupId>com.alibaba.cloudgroupId>
    38. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    39. dependency>
    40. <dependency>
    41. <groupId>org.apache.commonsgroupId>
    42. <artifactId>commons-lang3artifactId>
    43. dependency>
    44. <dependency>
    45. <groupId>org.projectlombokgroupId>
    46. <artifactId>lombokartifactId>
    47. dependency>
    48. <dependency>
    49. <groupId>cn.hutoolgroupId>
    50. <artifactId>hutool-allartifactId>
    51. <version>${hutool.version}version>
    52. dependency>
    53. dependencies>
    54. project>

    application.yaml

    1. spring:
    2. application:
    3. name: gateway
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: localhost:8848
    8. metadata:
    9. version: 0.0.1
    10. appname: ${spring.application.name}
    11. #指定命名空间 对应dev环境
    12. namespace: '7e3699fa-09eb-4d47-8967-60f6c98da94a'
    13. #指定分组 案例组
    14. group: 'EXAMPLE-GROUP'
    15. #指定集群环境 华南
    16. cluster-name: 'HuaNan'
    17. gateway:
    18. discovery:
    19. locator:
    20. enabled: true
    21. lower-case-service-id: true
    22. routes:
    23. - id: service-member
    24. uri: lb://service-member
    25. predicates:
    26. - Path=/member/**
    27. filters:
    28. - StripPrefix=1
    29. - id: service-user
    30. uri: lb://service-user
    31. predicates:
    32. - Path=/user/**
    33. filters:
    34. - StripPrefix=1

    启动类定义: GatewayApplication.java

    1. /**
    2. * gateway 网关
    3. *
    4. * @author wentao.wu
    5. */
    6. @EnableDiscoveryClient // 开启服务发现
    7. @SpringBootApplication // SpringBoot启动
    8. public class GatewayApplication {
    9. public static void main(String[] args) {
    10. SpringApplication.run(GatewayApplication.class, args);
    11. }
    12. }

    先后启动用户服务与会员服务:spring-cloud-alibaba-service-member,spring-cloud-alibaba-service-user,启动完成后启动网关服务: spring-cloud-alibaba-gateway
    ** 网关访问测试 **
    访问用户服务: http://localhost/user/hello/say/userGateway,该接口地址:http://localhost/user这一段会路由到用户服务里面去。
    所以实际访问的是用户服务的hello/say/userGateway。

    1. {
    2. "code": "1",
    3. "msg": "你好啊,userGateway!",
    4. "errorCode": null,
    5. "errorMsg": null,
    6. "result": null,
    7. "ok": true
    8. }
    源码代码存放地址#

    gitee: https://gitee.com/SimpleWu/spring-cloud-alibaba-example.git
    cnblogs: https://www.cnblogs.com/SimpleWu
    持续更新目录:https://www.cnblogs.com/SimpleWu/p/15476427.html

  • 相关阅读:
    [附源码]SSM计算机毕业设计超市订单管理系统JAVA
    牛客刷题,python入门基础(13)
    【算法】二叉树的层序遍历
    技术分享 | 开发板网口热插拔自动获取IP地址
    【python】(十六)python内置库——logging
    陇剑杯 省赛 攻击者1 CTF wireshark 流量分析
    Springboot 实践(19)负载平衡配置与运用
    数智随行 | 财务数字化转型的抓手:业务能力标准化
    我的编程之路
    怎样把英语视频字幕翻译成中文
  • 原文地址:https://blog.csdn.net/qq_42280739/article/details/126728006