个人随笔
目录
二十三、springCloudAlibaba-gateway初始入门
2023-11-09 21:49:07

一、什么是Spring Cloud Gateway

Spring Cloud Gateway是一个API网关,可以统一管理我们的微服务的API调用,具有路由转发,权限校验,限流等功能。

二、为什么需要

比如我们有100个微服务,每个微服务ip和端口都不同,总不可能前端调用的时候配置100个ip端口,或者在nginx配置100个ip端口吧,所以最佳的解决方案就是引入一个高性能的API网关,该网关最好可以跟注册中心集成,这样我们前端调用nginx,nginx配置网关集群,然后网关统一对所有微服务的调用路由进行管理。

三、环境搭建

1、先准备一个服务

可以参考如下链接准备一、springCloudAlibaba-nacos环境搭建,我这里准备的是可以跟注册中心搭交道的,毕竟网关里面也不可能直接配置微服务的地址。当然这一篇文章gateway网关暂时不接入nacos先,先把环境搭建起来。

2、准备maven项目

我这里的就基于上面微服务对应的父工程来搭建了。引入依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-gateway</artifactId>
  4. </dependency>

这里用的版本是2.2.6.RELEASE,若是没有按之前环境搭建引入父工程的话可以加上这个版本

3、准备启动类

  1. @SpringBootApplication
  2. public class GatewayApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(GatewayApplication.class,args);
  5. }
  6. }

4、准备配置文件

application.yml

  1. server:
  2. port: 8088
  3. spring:
  4. application:
  5. name: api-gateway
  6. cloud:
  7. #gateway配置
  8. gateway:
  9. #路由规则
  10. routes:
  11. - id: order_route # 路由的唯一标识
  12. uri: http://localhost:8010 #需要转发的地址
  13. #断言规则 用于路由规则的匹配
  14. predicates:
  15. - Path=/order-service/**
  16. #匹配请求http://localhost:8088/order-service/order/add
  17. #过滤器 用于过滤请求
  18. filters:
  19. - StripPrefix=1 #转发之前去掉第一层路径
  20. #http://localhost:8010/order/add
  21. #- id: stock_route

主要四看上面的配置,上面已经涉及了gateway网关的:路由、断言、过滤

路由:是一个数组,可以配置多个,每个有唯一id指定,id名字可以任意,不冲突即可,uri对应要转发的服务地址,也就是要代理的微服务地址,这里我的订单服务就是8010端口

断言:也是可以有多个,因为我们用了gateway网关后,前端请求的就是网关的地址了,也就是8088,而不会直接请求服务的地址,那么网关怎么知道要把前端的请求转发到哪个服务?这里就靠断言了,上面配置的/order-service/**意思是前端请求网关的地址路径上如果以order-service开头就都转到该条路由规则,也就是这种请求

  1. http://localhost:8088/order-service/order/add

网关判断有order-service开始就会转发到

  1. http://localhost:8010/order-service/order/add

但是这样请求肯定也是不行的,毕竟我们的订单服务8010根本就没有order-service这个路径,怎么办呢,这就要用到过滤了。

过滤:StripPrefix=1的意思就是转发之前去掉第一层路径,也就是把

  1. http://localhost:8010/order-service/order/add

变为

  1. http://localhost:8010/order/add

再转发,这样就合情合理了!

5、启动测试

访问http://localhost:8088/order-service/order/add, 得到了预期的结果!

 40

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2