订单交易处理系统

        订单交易处理系统, 这个系统分为两大子系统,一是订单服务系统, 二是订单成交后的业务处理(订单,资金处理),即交易服务系统, 其中订单成交涉及到与撮合系统的交互, 整个加起来是交易系统的核心.

系统主要结构如下图所示:


 

  • 订单服务系统

主要是用于处理用户订单操作(下单, 撤单, 订单状态(初始,委托,成交,部分成交,撤单,部分撤单)更新, 历史订单查询, 资金冻结解冻等), 而用户的操作入口又分为client端和api端处理;

当时在设计系统时要求:

下单响应时间短, 单机并发量高; 节点可横向扩容;

我们用到的一些处理方式:

  1. 订单号预先生产;
  2. 订单进MQ队列;
  3. 币种订单相关配置和参数缓存到redis;
  4. 订单表根据业务分表, 历史订单分表;
  5. 订单查询优化索引;
  6. 部分订单查询使用从库;
  7. 扩容交易对,交易区时进行分库;

交易对表的设计主要有:订单委托表, 交易表, 其他等辅助的配置表; 每个交易对一个库;

  • 交易服务系统

订单成交后的业务处理, 主要包含双方交易币种的资金更新, 资金解冻, 资金流水记录, 手续费扣除, 订单状态信息更新(类型,支付等), 成交记录生产, 用户账单流水等.

该系统涉及双方资金操作, 要保证事务处理一致性; 交易已经发生, 不可逆, 即双方的资金必须进行兑换.

  • 撮合系统

跟同行交流过, 不同的交易系统根据自己的业务, 体量和技术, 有使用java, go或c++进行开发;

买卖盘通常根据价格优先,时间优先进行撮合.

整个交易系统中撮合系统是内存撮合, 是最高效的, 稳定的, 不能成为瓶颈;




 

猜你喜欢

转载自blog.csdn.net/spring410/article/details/87010644