trading-system-gateway 是ETS对外暴漏服务的唯一入口,作为一个高可用的分布式网关,对外提供透穿grpc服务

一 、诞生的原因 - 核心需求

Ref ETS系统健壮性需求分析

1、剥离业务系统,从外围控制、保护业务系统的稳定鲁棒和性能鲁棒。
2、基于业务需求对请求分流,满足业务系统扩展性需求 (核心功能

一 、压测

描述:充分压测 高频报价下的订单计算,频繁opeart操作

目标:测出系统性能上限,作为容错阈值
重点参数: 可承受持仓单及pending单,Operator TPS。

二、实时监控及报警

描述:订单监控,异常监控,报价对比及监控 ,性能监控

三、容错策略 限流降级

描述:根据压测结果 作为系统自我保护阈值。

容错原则:以系统实时准确的订单计算为原则。

  • 限流:当持仓单接近系统上限时,限制部分组或全部组的开仓行为。

  • 降级:当处理性能接近系统阈值是,对etc等外围服务降级。

四、极端自保策略 熔断

描述:分业务级熔断和服务级熔断,业务级熔断属于容错策略,服务级熔断属于最终自保策略。

  • 当触发严重监控报警时或容错策略无效时,系统应当停止对外提供服务
    • 如有必要取消部分小额持仓单calc计算
  • 当跳闸时 应当有完备的重启策略再生策略, 或分流 或削减负荷
  • 当因服务内部(协程泄漏,内存溢出等)或不可预知的破坏容错原则的问题发生时触发熔断。

五、响应机制

描述:容错触发后使上游服务感知并做对应的请求相应,用户体验。

六、弹性扩展

描述:根据性能需求 当系统达到瓶颈时 弹性扩展服务性能或增加服务并行数

  • 单体性能扩展:基于容器及运维配合
  • 分布式:分布式服务改造 流量分流

目前除了opeart TPS 其余都没有做。所以当前ET6完全不具备金融级产品的上线形态。

功能目标 - 需求细节

  • 注册发现
  • 透明代理
  • LB实现之group分流
  • 事件同步

  • 全局入口流控
  • 请求流控
  • 超时控制
  • 自适应系统过载保护
  • 动态系统保护

  • 优雅反馈
  • 日志归档
  • 监控及报警
  • 服务治理
  • 可视化

  • 容器化
  • 云原生(k8s

二、当前阶段 - v0.0.1

1、目录结构

  • cmd 可执行文件 入口
  • dao 数据持久
  • dto 数据对象
  • event 事件
  • load_balance 负载均衡接口及实现
  • middleware 中间件插件 流控、追踪等
  • proxy 反向代理实现
  • registry 注册发现
  • router 可视化后端实现
  • util 公共工具

2、运行逻辑

2.1、Init

// http header matadata [gorup] :[ BRD]
http body data []byte

  • ETG启动时,会通过registy获取全部健康BackEnd元信息,并实时watch。
  • 通过BackEnd元信息获取ServiceMeta.LbStrategy 构建groupLb缓存。
  • 通过消息监听,获取并更新groupLb缓存。

2.2、调用逻辑

1
2
3
4
5
6
7
graph TD
Req[Req] --> ETG[ETG]
ETG --> gurad{gurad}
gurad -->|!Blocked| LB[LB]
gurad -->|Blocked| reject[reject]
LB -->|login!=nil| BackEnd[BackEnd]
LB -->|login==nil| master[master]

三、开发笔记

  • 透传

codec

  • grpc client 性能优化 http2 streaming/multiplexing

    二进制分帧
    很容易实现多流并行而不依赖建立多个 TCP 连接

  • grpc调用原理
    服务端:
        lis,err = net.listen()
        s := grpc.NewServer()
        grpc.RegisterService()
        s.Serve(lis)
        lis.Accepct()
            s.serveWG.Add(1)
            go s.handleRawConn()
  • gateway功能点
             编解码codec
             数据处理UnaryProxyHandler
             自定义负载 业务级分流 Balancefunc
             数据一致性

四、展望未来 - v0.1.0