springcloud~gateway网关

打印 上一主题 下一主题

主题 860|帖子 860|积分 2580

有时间,我们在搭建微服务时,总希望拿一个比较单纯的,没有污染其它代码的项目来从头开始做,今天我们来建设一个最简单的,gateway项目,它被注册到nacos里,路由配置也存到nacos里,动态实现更新配置功能。
依赖配置

版本:com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.1.0,com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2021.0.1.0,org.springframework.cloud:spring-cloud-starter-gateway:3.1.3
  1. <dependencies>
  2.         <dependency>
  3.             <groupId>com.alibaba.cloud</groupId>
  4.             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5.         </dependency>
  6.         <dependency>
  7.             <groupId>com.alibaba.cloud</groupId>
  8.             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  9.         </dependency>
  10.         <dependency>
  11.             <groupId>org.springframework.cloud</groupId>
  12.             <artifactId>spring-cloud-starter-gateway</artifactId>
  13.         </dependency>
  14.       
  15.         <dependency>
  16.             <groupId>org.springframework.cloud</groupId>
  17.             <artifactId>spring-cloud-starter-bootstrap</artifactId>
  18.         </dependency>
  19.       
  20.         <dependency>
  21.             <groupId>org.springframework.cloud</groupId>
  22.             <artifactId>spring-cloud-loadbalancer</artifactId>
  23.         </dependency>
  24.     </dependencies>
复制代码
bootstrap.yml配置
  1. spring:
  2.   application:
  3.     name: lind-gateway
  4.   cloud:
  5.     nacos:
  6.       config:
  7.         server-addr: 192.168.xx.xx:8848
  8.         groupId: DEFAULT_GROUP
  9.         namespace: public
  10.         file-extension: yaml #对应nacos上面的配置文件扩展名
  11.       discovery:
  12.         server-addr: 192.168.xx.xx:8848
  13. logging:
  14.   level:
  15.     root: warn
  16.     org.springframework.cloud.gateway: debug #日志级别,方便调试
  17.     org.alibaba.nacos: debug
复制代码
nacos里的lind-gateway.yaml配置
  1. spring:
  2.   cloud:
  3.     gateway:
  4.       discovery:
  5.         locator:
  6.           enabled: true
  7.       routes:
  8.       - id: micro-product
  9.         uri: lb://micro-product
  10.         predicates:
  11.           - Path=/product/**
  12.       - id: micro-account
  13.         uri: lb://micro-account
  14.         predicates:
  15.           - Path=/account/**
  16.       - id: micro-order
  17.         uri: lb://micro-order
  18.         predicates:
  19.           - Path=/order/**
  20.       default-filters:
  21.         - StripPrefix=1 #请求地址去掉第1位,例如你请求/product/md/create时,实际转发到micro-product服务里的接口是/md/create
复制代码
需要注意的地方


  • pom引用包时,需要添加spring-cloud-loadbalancer,以在gateway中实现负载协议
  • 使用nacos配置时,需要添加spring-cloud-starter-bootstrap
  • 如果是多级路径转发,加载添加StripPrefix,将可以在转发到后端时,将路径的前几位去除
测试

  1.         @RequestMapping(path = "/stock/deduct")
  2.         public Boolean deduct(String commodityCode, Integer count) {
  3.                 stockService.deduct(commodityCode, count);
  4.                 return true;
  5.         }
复制代码

  • 正常响应


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表