/BusinessTransferEngine

Business Transfer Engine

Primary LanguageC++

========================================================================
BusinessTransferEngine 项目概述
========================================================================

系统面临的问题

一般分布式系统面临的问题
cap 一致性,可用性和支持网络隔离
支持可用性,支持网络隔离,牺牲一致性
牺牲一致性的原则:
尽可能保护期货公司利益,防范客户资金风险

具体问题:
发往某个外部系统的指令特殊性
  执行时间不确定,可能很短,可能很长,也可能永远执行不完
  返回结果除了成功、失败还有不明
  发往同一系统的多条指令可能乱序
依靠数据库来提供事务处理不可行

业务级事务
  原子性:回滚时不要求数据库回退到事务发生前,只需要业务回退到事务发生前
    业务级操作(读写操作)
      读操作:可重复
      写操作:可重复,防乱序
  逻辑一致性:
  隔离性:客户级锁/客户业务级锁
  持久性:数据库

业务事务管理引擎
  单个业务功能为业务级操作的序列。成功业务的操作序列相同,失败或异常业务的操作序列随出错点不同而不同

测试
  任何一个外部系统可以一次返回成功,一次返回失败,多次超时后返回成功,多次超时后返回失败,永远超时
  任何一个外部系统可以在n次超时后返回成功或失败,0<=n<=无穷大