lym cb911cd676 shoulder 0.8.1 5 maanden geleden
..
src 46fa6d9119 compile success base on jdk17, spring boot 3.x, shoulder 0.8 7 maanden geleden
README.md 2fbf79124a feat:初步适配shoulder 0.6 3 jaren geleden
pom.xml cb911cd676 shoulder 0.8.1 5 maanden geleden

README.md

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