订单交易处理系统

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

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


 

  • 订单服务系统

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

当时在设计系统时要求:

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

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

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

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

 

  • 交易服务系统

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

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

  • 撮合系统

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

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

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




 

### 订单处理系统的数据流图设计 订单处理系统是一种典型的业务流程管理工具,其核心目标是高效地接收、验证和执行客户订单。为了清晰展示这一过程中的数据流动关系,可以采用数据流图(DFD)来描述。 #### 数据流图的作用 数据流图用于表示信息系统中数据的流向以及各组成部分之间的交互方式[^1]。它能够帮助开发人员理解复杂的业务逻辑并优化系统架构。 #### 示例:基于书店订单处理的数据流图设计 以下是根据引用材料提供的书店订单处理场景绘制的一个简单数据流图示例: 1. **外部实体** - 顾客提交订单。 - 出版社接收已处理的订单汇总信息。 2. **主要处理节点** - 系统接收到订单后,先对其进行初步校验。 - 如果订单有效,则进一步分类为优先级不同的两类订单——优先订单与正常订单。 - 对于优先订单立即处理。 - 正常订单则等待批量调度时间统一处理。 - 处理完成后生成最终的结果文件供后续操作使用。 3. **内部存储** 图书目录作为静态资源被频繁访问用来核对每一份新来的请求;而动态更新的部分包括但不限于当前待办事项列表及其状态标记等。 4. **具体实现细节说明如下所示** ```plaintext +-------------------+ | 顾客 | +--------+----------+ | 提交订单 v +--------v----------+ | 系统 | | | | -> 校验订单 <-| | | | --> 分类订单 ---->| | (优先/常规) | | | | ---> 执行订单 ---> | | +--------+---------+ | 返回结果 v +--------v----------+ | 出版社 | +-------------------+ ``` 此简化版本仅展示了高层次上的活动序列,在实际应用当中还需要考虑更多因素如错误恢复机制、安全性保障措施等方面的内容[^2]。 --- ### 关键点解析 - **外部实体**定义了参与整个交易链条之外的角色或者子系统; - **处理节点**代表具体的计算任务或者是决策环节; - **数据存储组件**保存临时或永久性的记录以便将来查阅; - 使用箭头指示方向表明谁向哪里传递什么类型的消息。 以上就是有关如何构建一个基本框架下的订单管理系统之数据流图表象的方法论探讨[^1]^。 ```python # Python伪代码模拟简单的订单分发逻辑 def process_order(order): if validate_order(order): # 假设有一个函数validate_order() order_type = classify_order(order) # 可能返回'priority', 'normal' if order_type == 'priority': handle_immediately(order) elif order_type == 'normal': queue_for_batch_processing(order) def main(): orders = get_orders_from_customers() # 获取所有客户的订单 for o in orders: process_order(o) if __name__ == "__main__": main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值