流量调度和编排系统

服务化管理

服务协议

  1. HTTP/1.1
  2. HTTP/2
  3. HTTP/3(QUIC)
  4. MQTT

服务路由规则

  • IP 过滤
  • URL 地址路径匹配
  • HTTP 请求头部信息匹配
  • HTTP 请求动作过滤

服务发现

  • ​ 内置Etcd

容错设计

  • 限流
  • 熔断
  • 重试
  • 超时
  • 服务降级

发布管理

  • 蓝绿发布(流量切换)
  • 灰度发布(流量调度)

API管理

  • 后端多API聚合调用
  • 后端API流程编排
  • Swagger/SDK/文档(需要后端支持Swagger)

安全相关

  • 用户 HTTPS 证书和私钥管理
  • IP地址黑白名单
  • API签名验证(HMAC)
  • JWT Token 验证
  • OAuth2 支持
  • Let’s Encrpt证书自动化管理

插件化管理

  • 新增、导入、编辑、查看、删除过滤插件
  • 插件组合 Pipeline 编排,进行流程控制
  • 用户可以定制插件,进行二次开发

Service Mesh

  • Mesh Sidecar Ingress/Egress
  • Mesh Service Registry(兼容 Eureka/Consul/Nacos)
  • Mesh 限流/熔断/重试/超时

FaaS

  • FaaS Function 以SideCar形式部署用户业务逻辑的docker 镜像, 自动伸缩Function实例个数。
  • FaaS Function 事件订阅(队列,定时任务)
  • FaaS Function 状态监控,资源消耗,延迟,请求量统计

第三方集成

  • Kubernetes Ingress Controller 集成
  • Knative Serverless 集成
  • Kafka 输出
  • 服务发现:Eureka, Consul, Etcd, Nacos

高性能可用

高并发 流量处理

  • 秒杀 - 选择服务,秒杀活动号,秒杀活动场次号
  • 过滤 - 在设计用户定制服务时,可以定制过滤规则
  • 缓存 - 为每个服务针对性定制缓存数量

负载均衡

  • 轮流分配
  • 随机分配
  • 按权随机分配
  • IP 地址哈希
  • HTTP 头部信息哈希

集群管理

  • 集群配置(配置名称,IP地址)
  • 集群自动化选主
  • 多集群配置,一键切换集群

热更新

  • 程序不停机热更新

运维

CLI

  • 命令行管理工具,提供配置更改、状态查询、排障支持等功能

管理API

  • 对外提供RESTful API,可以进行二次开发,与用户其它系统进行集成,或者进行自动化管理和运维

调用链跟踪

  • OpenTracing
  • OpenZipkin

全局监控

  • 节点名
  • 状态(健康,故障)
  • 节点角色信息 - Writer(Leader/Follower), Reader
  • IP 地址
  • 心跳时间

节点统计

  • 流量吞吐量 (TPS/m1, m5, m15)
  • 响应时间 (p50,p95,p99)
  • 请求/响应数据量 (字节数)

服务监控

  • 服务器吞吐量 (Server TPS/m1, m5, m15)
  • 后端吞吐量 (Backend TPS)
  • 服务器响应时间(p50,p95,p99)
  • 后端响应时间(p50,p95,p99)
  • 对服务按照各种指标进行排序
  • 服务器请求/响应数据量 (字节数)
  • 状态码分布

管理

配置管理

  • 集群管理
  • 服务及路由管理
  • 插件管理
  • Pipeline 管理
  • Controller 管理(服务发现、监控系统、FaaS等)

用户管理

发布管理

  • 蓝绿发布设定
  • 灰度发布设定
  • 变更预览与发布
  • 发布历史查询
  • 同步远程配置

可视化监控

  • 接口维度吞吐量展示
  • 接口维度响应时间分布式展示
  • 接口维度的吞吐, 耗时,错误率等TopN排名展示
  • 接口维度的状态码分布
  • 接口维度请求/响应数据量统计
  • Backend维度吞吐量展示
  • Backend维度响应时间分布展示
  • Backend维度的状态码分布
  • 集群节点维度吞吐量展示
  • 集群节点维度响应时间分布展示
  • 集群节点维度平均请求/响应数据量分布展示

日志保全

对网关用户和服务的所有操作均保留日志,方便安全审计,证据留存,和历史记录备案查找