# 网关
网关主要用于转发系统之间调用的请求。在微服务治理平台中, 一个系统将部署一套网关. 系统内部应用的前端访问后端, 或者其它系统的应用需要访问此系统内的应用提供的接口, 请求必须走网关。网关对外提供治理数据的 rest 接口,治理平台通过此接口将治理数据发送至网关。网关收到治理数据之后, 由统一存储接口保持至持久存储之中,然后由存储的通知机制,通知所有网关实例。网关缓存也支持通过懒加载的方式, 按需加载所需治理数据。
网关整体架构如下图所示:
本章节所描述的是网关部署并在Governor注册后,如何在Governor中配置网关。
前提:网关部署完成
# 新建网关
单击左侧导航树上的 “网关” ,右侧区域显示 “网关” 界面,点击“设置网关”按钮,进入“新增网关”界面。
网关编码直接从系统指定地址的注册中心中查询本系统下以“GATEWAY-”开头应用,其他参数按照如下参数说明表格填写。
参数 | 说明 | 界面规则 |
---|---|---|
网关编码 | 必填,对应部署的网关的spring.application.name (opens new window) | 下拉单选,支持英文、数字、-,下划线,英文开头,不用-结尾,最多25个字符 |
网关名称 | 网关的名称,仅用于页面展示 | 支持中文,英文,数字,-,下划线,最多20个字符 |
默认组预期实例数 | 预计有多少实例 | 正整数 |
网关架构类型 | 目前网关类型仅提供Spring Cloud Gateway这一种类型 | 下拉单选 |
描述 | 对网关的描述 | 不限制字符类型,最多200个字符 |
填写完成后点击“保存”后进入“网关详情”页面。
# 编辑及删除网关
点击“网关详情”页面中的“编辑”、“删除”按钮进入相应页面进行网关的编辑、删除。
删除网关后,网关下所有API都将被删除,若有API授权,则会自动取消授权。
# API发布
本章节所描述的是应用部署后,如何在Governor中将应用API发布到网关供其他系统消费者应用调用(消费者如何调用api请参考API授权:7.2.1.3.2 API授权 (opens new window)。
# 导入API
单击左侧导航树上的 “ 网关 ” ,右侧区域显示 “网关详情” 界面,单击“API发布”tab页,进入“API列表”界面。
点击“导入API”进入“导入API”界面:
其中前缀为API路径的前缀,不设置前缀需要填写反斜杠“/”。
API导入网关有两种方式:1.json文件导入。2.选择系统API。
# 选择系统API导入
单击“选择系统API”,选择需要导入的API的应用及应用实例组,单击“查询”,显示该应用实例组下所有API,选择需要导入的API,点击“确定”,回到“API发布”界面,API列表显示数据,发布状态为“未发布”。
# json文件导入
单击“文件导入”,单击“点击上传导入文件”,选择json文件进行导入,点击“确定”,回到“API发布”界面,API列表显示数据,发布状态为“未发布”。
注意:导入的文件必须为通过“导出API”按钮导出API的json文件。
# 设置Tag及别名
API导入后会自动生成Tag为接口的方法名。如需修改Tag及别名,可单击如图所示的需要修改的接口的图标进入编辑API信息页面:
# 导出API
导入到网关中的API可以通过“导出API”按钮,将已发布的API或是全部API导出成json文件,生成的json文件可供其他网关导入API使用:
# 发布API
选择需要发布的API,点击“发布”或点击“批量操作”按钮下的“批量发布”,
若如图显示已发布,则API发布成功。
# API授权
消费者应用在服务器部署后,如果需要调用生产者某个接口,需要由生产者应用发布接口到网关,然后通过创建订阅者来授权接口给消费者。
如何在Governor中发布API,请参考Governor 微服务治理平台使用手册:7.2.1.3.1 API发布 (opens new window)。本章节所描述的是应用部署后,如何在Governor中将生产者应用的API授权给消费者系统下的应用调用。
1.生产者授权API给消费者系统
# 创建订阅者
单击左侧导航树上的 “ 网关 ” ,右侧区域显示 “网关详情” 界面,单击“API授权”tab页,进入“授权”界面。
单击订阅者旁“+”进入“新增订阅者”界面。
其参数说明如下:
参数 | 说明 |
---|---|
订阅者名称 | 必填 |
授权域 | 将本系统下已发布的API作为生产者,则授权域表示消费者所在域,必选 |
授权系统 | 将本系统下已发布的API作为生产者,则授权系统表示消费者所在系统,允许消费者调用生产者,必选 |
单击“保存”,回到“API授权”界面。其中,当前系统为储备资产管理系统,是生产者,显示的API列表为 生产者发布的API,授权域为自有资金系统所在域,自有资金系统为消费者,授权的过程即允许消费者调用生产者。
# 选择API进行授权
选择需要进行授权的API,点击“授权”或“批量授权”,若API授权状态显示已授权,则授权成功,消费者自有资金系统下的应用可调用生产者储备资产系统发布的指定API。
# 验证
在自有资金系统中,创建一个通过resttemplete或feign调用上图中sayHi和throwsError方法的应用:
调用该接口,如能调通则验证通过。
# 路由
路由为网关的基本构建块。它由ID,目标URI,predicate集合和filter集合定义。如果predicate为真,则匹配路由。本章节所描述的是网关在服务器部署并在governor注册后,如何在governor中动态添加修改路由、根据令牌桶算法对路由限流及黑白名单。
前提:网关部署完成
# 新建路由
单击左侧导航树上的 “ 网关 ” ,右侧区域显示 “网关” 界面,单击“路由”tab页,单击“创建路由”,进入“新增路由”界面。
在“新建路由”界面中,参数按照如下参数说明表格填写。
参数 | 说明 | 界面规则 |
---|---|---|
路由名称 | 必填 | 支持中文,英文,数字,-,下划线,最多20个字符 |
优先级 | 执行路由的先后顺序,数字越小越先执行,最小为0 | 正整数 |
路由模板 | 必填,提供的路由样例,下面有具体说明 | 下拉单选 |
路由配置 | 配置路由信息,可根据提供的路由模板进行修改 | 符合yml规范,最长0.5万个字符 |
其中路由模板为提供的路由样例,是Spring Cloud Gateway提供的常用的路由样例。选中“路由模板”后,模板的配置将会显示在“路由配置”中,可直接在“路由配置”中对predicate和filter进行修改。
路由模板:
rewrite-path-filter:自定义请求前缀,转发请求到后端之前重写URL删除前缀标识
hystrix-gateway-filter:将断路器引入网关路由,将filter包装在带有命名的HystrixCommand中。此外,Hystrix过滤器还可以接受可选fallbackUri参数,如果调用了fallback,则请求将被转发到与URI相匹配的controller。详情及hystrix-gateway-filter扩展可参考hystrix-gateway-filter (opens new window)
prefix-path-filter:匹配请求URL前缀,在转发请求到后端服务之前重写URL添加一个前缀(如添加一个版本号)
更多路由配置详情可参考Spring Cloud Gateway官网:Spring Cloud Gateway官网 (opens new window)
点击“保存”,返回“路由”界面,点击“状态”下开关按钮启用路由。
# 路由限流
单击“路由”tab页,单击“路由名称”列的指定路由名称进入“路由详情”界面,单击“限流”tab页进入“限流策略”界面。
令牌桶限流模型: 以图中补充速率5个/秒,令牌桶容量10为例,每隔1秒5个令牌被加入到桶中,桶最多可以存发10个令牌,如果令牌到达时令牌桶已经满了,那么这个令牌会被丢弃,当一个请求到达时,就从令牌桶中删除1个令牌,如果令牌桶中没有令牌,那么不会删除令牌,并且认为这个请求在流量限制之外,则该请求需要等到桶中有补充的令牌。如图所示:
注意:令牌桶容量必须大于补充速率。
# 路由的黑白名单
单击“路由”tab页,单击“路由名称”列的指定路由名称进入“路由详情”界面,单击“黑白名单”tab页进入“黑白名单”界面。
同一路由只能启用黑名单或白名单中的一种类型,如:单击“创建白名单”,进入“新增白名单策略”界面。
其参数说明如下:
参数 | 说明 | 界面规则 |
---|---|---|
策略名称 | 必填,策略的名称,仅用于页面展示 | 支持中文,英文,数字,-,下划线,最多20个字符 |
IP列表 | 必填,白名单IP | 新增控件,支持添加多个,不限制添加个数,符合url规范 |
域名列表 | 必填,白名单域名 | 新增控件,支持添加多个,不限制添加个数,符合域名规范 |
黑名单同理
单击“保存”,回到“黑白名单列表”界面,单击指定策略的“启用”开关按钮。
# 验证
如上图所示,本机添加了路由白名单后(本机IP为10.15.15.238),用postman调用该路由URL,网关拦截器校验请求IP属于白名单,放行通过。
# 网关监控
单击左侧导航树上的 “ 网关 ” ,右侧区域显示 “网关” 界面,单击“监控”tab页,显示“网关”监控页面:
可通过该页面查看网关的系统拓扑、概况及业务链路信息。
# 网关日志
本章节所描述的是网关部署后,如何在Governor中查看网关的系统日志。
单击左侧导航树上的 “ 网关 ” ,右侧区域显示 “网关” 界面,单击“日志”tab页,显示“日志”监控页面,单击“查询”,显示网关日志: