赞
踩
Spring Cloud Gateway 是基于 Spring 生态系统之上构建的 API 网关,API 网关是一个服务器,是系统对外的唯一入口。API 网关封装了系统内部架构,为每个客户端提供定制的 API。
性能:API 高可用,负载均衡,容错机制。
安全:权限身份认证、脱敏,流量清洗,后端签名(保证全链路可信调用),黑名单(非法调用的限制)。
日志:日志记录,一旦涉及分布式,全链路跟踪必不可少。
监控:记录请求响应数据,API 耗时分析,性能监控。
限流:流量控制,错峰流控,可以定义多种限流规则。
路由:动态路由规则
本文先聊路由的使用
本文通过实例演示,需要搭建四个服务,分别是Eureka,资源A,资源B,Gateway,实现通过请求网关访问到资源A和B服务 首先将资源A和B服务以及Gateway网关都注册到Eureka中
资源A服务接口
- @RestController
- @RequestMapping("/demo")
- public class DemoA {
-
- @GetMapping("")
- public String resources(){
-
- return "访问资源A服务成功";
- }
-
- }
资源B服务接口
- @RestController
- @RequestMapping("/demo")
- public class DemoB {
-
- @GetMapping("")
- public String resources(){
-
- return "访问资源B服务成功";
- }
-
- }
然后最重要的网关中的配置信息
- server:
- port: 8082
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: resources-a #路由规则ID,上下文唯一
- uri: lb://resources-a #路由目标的服务名(lb代表从注册中心获取服务)
- predicates: #转发路径
- - Path=/resources-a/**
- filters:
- - StripPrefix=1 #转发时去掉Path中第一个节点 配置多个路由时很重要
- - id: resources-b
- uri: lb://resources-b
- predicates:
- - Path=/resources-b/**
- filters:
- - StripPrefix=1
-
- eureka:
- instance:
- prefer-ip-address: true
- instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
- client:
- service-url:
- defaultZone: http://127.0.0.1:8081/eureka
通过配置routes属性达到转发的目的
+ id为路由规则ID,可以随意配置,但是要保证唯一
+ uri可以指定http地址也可以指定Eureka的服务名
+ predicates是配置转发路径/**代表所有接口,可以单独指定某个接口
+ filters它的作用是转发时去掉Path中第一个节点
首先测试直接访问A服务
然后测试访问网关,8082是网关的端口,网关路由最终将请求转发到了A,B服务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。