======================================================================== BusinessTransferEngine 项目概述 ======================================================================== 系统面临的问题 一般分布式系统面临的问题 cap 一致性,可用性和支持网络隔离 支持可用性,支持网络隔离,牺牲一致性 牺牲一致性的原则: 尽可能保护期货公司利益,防范客户资金风险 具体问题: 发往某个外部系统的指令特殊性 执行时间不确定,可能很短,可能很长,也可能永远执行不完 返回结果除了成功、失败还有不明 发往同一系统的多条指令可能乱序 依靠数据库来提供事务处理不可行 业务级事务 原子性:回滚时不要求数据库回退到事务发生前,只需要业务回退到事务发生前 业务级操作(读写操作) 读操作:可重复 写操作:可重复,防乱序 逻辑一致性: 隔离性:客户级锁/客户业务级锁 持久性:数据库 业务事务管理引擎 单个业务功能为业务级操作的序列。成功业务的操作序列相同,失败或异常业务的操作序列随出错点不同而不同 测试 任何一个外部系统可以一次返回成功,一次返回失败,多次超时后返回成功,多次超时后返回失败,永远超时 任何一个外部系统可以在n次超时后返回成功或失败,0<=n<=无穷大