mirror of
https://gitee.com/ChinaLym/shoulder-platform.git
synced 2025-12-30 11:02:26 +00:00
shoulder-api-gateway
接入层网关:安全、限流、日志、监控、缓存(业务无关)
API 服务网关:超时、缓存、熔断、重试、查询聚合、数据校验(时间、方法、版本、AppKey、签名) 【贴近业务】
实际应用中,也可以根据自己的设计,将代理网关的能力赋予 API gateway 中。
-
安全
-
租户识别
-
调用者识别
-
外部调用网关时请求验签、解密
-
内部返回给外部、内部调用外部时加签、加密 (字段排序)
-
参数校验
-
字段控制
- 排序
- 黑白名单
- 额外字段填充/抹除
-
Oauth 验权
-
认证
-
字段脱敏
-
调用源信息解析
- 源ip
- 源地址
-
OAuthClient
-
WEB 攻击抵御
- redirect
- xss
- ssrf
- 文件上传
- referer
-
默认 error 页面
-
-
日志
- 日志字段配置(解析方式/位置)、提取、记录
- 摘要日志
- 审计日志
-
协议转换
- 通信协议转换
- HTTP - GRPC
- HTTP - DUBBO
- ...
- 格式转换
- 标准错误码与 HTTP 响应码映射
- 错误码转换
- 错误消息处理
- 特殊格式
- 数据转换
- 通信协议转换
-
上下文
- Trace 追踪
-
流量控制
-
流量切换
- 流量分组(基于ip/cookie)
- 机房转发
- 流量复制
- 链路分组
- 基于应用版本,减少新老版本互通
- 基于逻辑区域
- 灰度引流
- 单元分隔(全局存储G/可副本读C/逻辑分区R)
-
流量限制
- 滑动窗口
- 直接用 redis incr (key为当前的秒时间),计算一秒内的请求次数,当value大于 xxx 时,其余的请求丢弃。
- 简单、但粒度较粗,可能在极端情况出现双倍流量、容易出现流量尖刺,使得整体响应时间变长体验较差
- 漏桶
- 遇到压力时流量仍然可控,但即使没有负载,也需要等待漏出,不能容忍突发峰值
- 令牌桶【默认】
- 比漏桶多了允许一定的突发流量,使用较广泛,最大峰值=桶大小,最大高压值=令牌产出速率
- 滑动窗口
-
流量回放
- 流量记录
- 流量重播
-
负载均衡
-
超时熔断
-
数据缓存
-
服务降级
-
-
API 管理
- 上线
- 下线
- 分组
- 自定域名
- 发布
- 灰度
- 流程审批
- 导入导出
- 订阅
- 版本管理
- OpenAPI
- 扩展能力
- API 文档
- SDK 下载
- 页面调试
- API 市场
- 官网管理
-
监控告警
- 请求数
- 流量
- 响应时间
- 错误率
- 异常告警(返回值/波动)
- 日志监控
- 日志分析
- 调用统计
- 故障注入
- API 巡检
- 故障分析(埋点)
特点
- 高性能
- 数据压缩/协议转换,充分利用网络,保证传输效率与质量
- 强安全
- 加密、验签、认证、鉴权、流控
- 高可靠
- 充分测试验证,极端环境仍可保证服务响应可控
- 高可用
- 99.99%+,通过流量限制、引流转发、流量隔离、负载均衡、故障转移、降级、平滑升级等措施全方位避免服务宕机,极端情况仍可通过集群与灾备能力保证可用性。
- API 管控
- 提供可视化的完整管理方案
- 易用性强
- 配置、监控、维护通过可视化管理,极易维护
其他可选依赖
-
用户中心
-
开放中心(授权服务器、认证服务器)
-
(硬件加解密服务器)
-
(沙箱)
-
缓存
-
脚本语言选型
- Groovy,JIT后最快
- Aviator 被编译成字节码,不JIT最快,JIT 次之 √
- IKExpression 超轻量级
- Drools 较重,功能完善,企业级
上线流程 DEV、SIT/TEST、PRE、GRAY、PROD