微服务网关

平台中部署了很多微服务,这些微服务对外提供 API 接口以便客户端
调用,每个微服务都有各自的地址、端口等信息,一个客户端可能需
要访问很多不同的微服务去实现业务功能。这就需要客户端动态维护
微服务的信息并与多个微服务之间进行身份验证工作,为了解决这些
问题,就需要一个能够统一管理 API 的网络关口,作为整个微服务
平台请求的唯一入口,在网关层处理所有非业务功能(比如对调用微
服务的客户端进行身份验证、记录日志、动态路由等),本方案采用
Spring 官方推出的 Spring Cloud Gateway 网关组件,具有如下特
性:
•
是基于 Spring Framework 5 和 Spring Boot 2.x 的响应式、
非阻塞式的 API;
•
动态路由:能够匹配任何请求属性;
•
可以对路由指定 Predicate(断言)和 Filter(过滤器);
•
集成 Hystrix 的断路器功能;
•
集成 Spring Cloud 服务发现功能;
•
易于编写的 Predicate(断言)和 Filter(过滤器);
•
请求限流功能;
•
支持路径重写。
客户端向 Spring Cloud Gateway 发出请求。如果 Gateway Handler
Mapping 确定请求与路由匹配,则将其发送到 Gateway Web Handler。
此 handler 通过特定于该请求的过滤器链处理请求。而这些匹配是由
路由断言 Factory 完成的,Spring Cloud Gataway 包含了很多内置 的
路由断言 Factories,这些断言都匹配 HTTP 请求的不同属性。多
个路由断言 Factories 可以通过 and 进行组合使用。
主要内置断言 Factory 包括:
•
After 路由断言 Factory,After Route Predicate Factory
采用一个参数---日期时间。在该日期时间之后发生的请求都将被
匹配;
•
Before 路由断言 Factory,Before Route Predicate Factory
采用一个参数---日期时间。在该日期时间之前发生的请求都将被
匹配;
•
Between 路由断言 Factory,Between 路由断言 Factory 有两
个参数,datetime1 和 datetime2。在 datetime1 和 datetime2 之
间的请求将被匹配。datetime2 参数的实际时间必须在 datetime1
之后;
•
Cookie 路由断言 Factory, Cookie 路由断言 Factory 有两个
参数,cookie 名称和正则表达式。请求包含次 cookie 名称且正则
表达式为真的将会被匹配;
•
Header 路由断言 Factory,Header 路由断言 Factory 有两个
参数,header 名称和正则表达式。请求包含次 header 名称且正则
表达式为真的将会被匹配;
•
Host 路由断言 Factory, Host 路由断言 Factory 包括一个参
数:host name 列表。使用 Ant 路径匹配规则,.作为分隔符; •
Method 路由断言 Factory,Method 路由断言 Factory 只包含
一个参数: 需要匹配的 HTTP 请求方式;
•
Path 路由断言 Factory,Path 路由断言 Factory 有 2 个参数:
一个 Spring PathMatcher 表达式列表和可选;
•
Query 路由断言 Factory,Query 路由断言 Factory 有 2 个参
数: 必选项 param 和可选项 regexp;
•
RemoteAddr 路 由 断 言 Factory,RemoteAddr 路 由 断 言
Factory 的参数为 一个 CIDR 符号(IPv4 或 IPv6)字符串的列表,
最小值为 1,例如 192.168.0.1/16(其中 192.168.0.1 是 IP 地址
并且 16 是子网掩码)
另外,Spring Cloud Gateway 可以与 Oauth2、JWT 集成实现在网关
进行请求的身份验证与授权功能。

相关推荐
FastCAE202212 分钟前
FastCAE AI应用助手重构(一)架构与桥接详解
人工智能·重构·架构
开源推荐官21 分钟前
多门店 O2O 商城选型复盘:从开发视角对比主流开源系统
java·架构·开源·php
小白的码BUG之路33 分钟前
K8s -- 搭建过程中经常遇到的问题
云原生·容器·kubernetes
FPGA小迷弟1 小时前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
大腾智能1 小时前
普通笔记本跑CAD,云原生和本地安装差在哪
云原生·国产cad·cad软件·云原生cad
静以修身zzz1 小时前
OpenStack对象存储-Swift、OpenStack编排管理-heat、OpenStack网络管理-neutron
linux·运维·服务器·架构·openstack·swift
螺蛳粉 螺蛳粉1 小时前
第 03 篇:为什么 K8s 的最小调度单元是 Pod 而不是容器:pause 容器与边车模式(底座认知 03)
docker·云原生·容器·kubernetes·etcd·运维排障·kube-apiserver
艾伦_耶格宇1 小时前
【kubernetes - 1.28版本】-9 K8S-dashbord可视化界面
云原生·容器·kubernetes
Gauss松鼠会1 小时前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb
超级架构师2 小时前
让 Fortran 模型自己调用 Agent:原生 Fortran 2008 实现深度剖析
人工智能·python·架构·机器人·开源·fortran