交易系统架构思想回顾
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 延伸:传统的物理时间概念能否被新的事件模型所取代?
流,为什么是流
• 多维分析
– 交互模型角度:人机交互 ==> 自动化交易 – 数据模型角度:关系型数据模型 ==> 基于时间/事件的消息/指令模型 – 系统模型角度:多层次多功能模块化系统结构 ==> 面向消息流的分布式系统结构
• 消息协议分析
• 延伸:模型思想与模型工具到底是什么关系?为什么模型工具的效果总是不理想?
微服务,架构新目标
• 职责分离模式一再被架构调整中突破自我(技术架构发展路线)
– 单一系统,两层/多层结构 – 单一系统,前置+核心层次+管理子系统 – 单一系统,前置+交易核心+风险核心+管理系统 – 交易结算分离,门户+交易核心+风险核心+推送核心+管理服务 – 命令查询分离,前置服务+多交易业务核心+风险核心+消息服务+管理服务+。。。
Multi-Actor-Model + MQ(HA) + ES + SAGA q SAGA( p), p I p U
q O q V
一致性的成与败
• 又是时钟!
– 时间戳 – 逻辑时钟、统一时钟,向量时钟
• 参考模型
– 弱一致性、强一致性 – 顺序一致性、因果一致性 – 最终一致性与流一致性 – 算法:仲裁/自决方法,Paxos,Raft,Zab
交易系统架构思想回顾
核心概念和基础思想以及探究
Version 0.5
夏之春 金仕达技术总部 11/2018
目录
MDD
微 生定容快二一数流时
服 与量错,进致学,间
务 , 架 构 新
, 美 哒 哒
死 , 是 个 问
化 , 手 套 还
的 美 丽 迷 局
够 快 吗
制 的 优 势 与
性 的 成 与 败
本 质 论
• 全方位定量化
– IT:CPU、Mem、Disk、NC/IO、Net/Switch、Host/Storage – 应用:TPS、LAT、RPO/RTO、连接数、在线数、订单容量、持仓容量、风控计算频率 – 业务规模估算是一切定量化的重要计算基础和核心保障目标
• 传统1/10的高配原则
– 理由:高风险的应对实质是高成本的投入支持,就高不就地,这里没均值什么事 – 峰值喜好:历史峰值作为估算的正态化数值之一,理论峰值才是计算的边界 – 高配原则是系统架构信心的来源之一,也是其高端交易系统的尊贵品质
为 什 么 是 流
与 事 件
目 题是
尴
标
锤
尬
子
时间与事件
• 交易系统是一个什么时间观的世界
– 现代交易系统处于一个跨地域、跨时区、分布式IT时钟环境 – 物理世界的时间概念被运用于交易时段、交易规则、交易行为限制等方面,甚至包括交易日 – 时钟同步的必要性和局限性
• 现代交易系统的应对策略
– “宽进严出”、系统状态机、权限控制、流控 – 时间为表象、事件为实质 – 排队机/授时器/定序器
– 柜台(主席)系统,更期望 TPS优势,同时兼具LAT优势 – 二席(极速)系统,更期望LAT优势
• TPS与LAT在系统能力方面的矛盾性和相互促进
– 共同提高、相互平衡、跨越发展
• 度量方法和工具对“快”的保障和促进
– 微/纳秒精度下的时间刻度/多锚点计数捕捉 – 分布式跨机跨进程的(分段)延迟计时
– 请求/应答、轮询、广播/多播、推送、可靠推送 – 有序/持久化、单调递增、对象化消息、发布/订阅 – 接口契约化,违规风险巨大且不可控
• 金融交易业界里流模型的世界观、方法论
– 交易流(会话流)、私有流(会员流)、公有流(市场流) – FTD, FIX,STEP,FAST
• 目前新时代交易系统对流的理解和运用
快,够快吗
• 快的指标
– TPS – 每秒交易指令(处理)数,一般指交易处理核心模块里的指标 – LAT – 指定P2P端的消息延迟,一般指从系统边界进入的订单指令消息到从边界出来的订单结果消息之间的时间延迟 – 在分布式系统和并发访问模型下,TPS与LAT没有直接的严格数学关系
• TPS度量了系统模块的并发处理(容量)能力,LAT决定了目标系统对关键指令的反馈能力
• 核心概念:事件
– 事件概念的唯一性和可追溯性 – 事件的表达定义:时戳、编号、类型、名称、源、目的、行为/结果… – 前置事件、后置事件、并行事件、事件嵌套、循环事件、操作事件、状态事件、数据事件、失败事件、故障事件... – 事件驱动一切:订单、成交、行情、风险、决策/执行、开闭市、策略; – 定时器(授时)的运用,交易日/自然日的嫁接价值
• HA方向
– 程序代码/数据隔离、服务粒度独立 – 程序故障隔离和事故现场热处理 – 故障自动发现和智能决策
• 延伸:技术走向问题的纠结中,应该不忘寻根所有问题的来源
MDD,美哒哒
• 模型领域实践是交易系统架构历史上非常成功的实践领域
– 应对复杂性业务需求和组织化技术研发资源 – 稳定保证软件质量和品质控制的能力 – 提供精准管理和可信维护的技术理论方法
– 从消息交互模型转变为消息/数据服务模型 – 流实质是消息数据模型,可靠推送是最佳实践之一
• 延伸:帝国主义的FIX和开放世界的API
数学本质论
• 核心模型的数学公式 {Ti , Oi} F (Ti-1, Ii )
– F 系统模块代码空间,T 系统模块数据空间,i 事件 – I 模块输入消息/事件(序列),O 模块输出消息/事件(序列) – 系统参考模型:Single-Actor-Model + MQ(HA)
• 性能方向
– IT:主机、交换机、OS、CPU/Cache、IO、低延迟网卡、FPGA – 软件:Compiler、优化器、算法创新、流程改进、无锁用户态、RDMA、协程、OpenMPI\OpenMPI、LLVM… – 架构:一体化(反‘分布化)、软件模型(职责分离、并发模式、Flow)、低延迟网络互连架构
• 定量化的价值观
– 全面可控 – 高度可信 – 深度可见
• 延伸:定量化方法是优势性架构方法之一,但其不足和问题由谁弥补?
生与死,是个问题
• 问题提出
– 性能(Perf)对交易系统发展的核心源动力(类似人类对生命的无限渴望) – 可用性(HA)是金融领域的与生俱来的恐惧(类似人类对死亡的无边恐惧) – 技术无法克服,但可以提升适应和保障能力
• 延伸:多层架构、分布式架构、微服务架构、云原生架构都是在交易系统领域架构方法论的不同发展经历阶段
©2016 FIS and/or its subsidiarwk.baidu.comes. All Rights Reserved. FIS confidential and proprietary information.
• 主要适用的业务类型:金额、价格、比率(万分之15)、比值(1:13)、统计分析数值 • 金融领域的十进制数值使用要求 • 主流金融商用标准IT系统中二进制数值的运用标准
– 金融交易:二进制偏好 – 金融结算支付(会计):十进制偏好 – 金融工程:科学型偏好
• 延伸:十进制数值类型decimal是终极手段吗?
• 延伸:工具优先发展、快刀不是最快
容错的美丽迷局
• 冗余、备份、复制
– 数据冗余难度大于应用冗余难度 – 程序故障重要级别大于系统故障重要级别
• 故障分类和级别
– 系统故障,程序故障 – RPO(必须=0), RTO(尽量小)
• Failover的过程
– 故障发生、故障发现、故障转移、故障恢复 – 人工切换的巨大二次事故风险、自动切换(中心仲裁、自选举)的真正运维意义
• 理论
– RWN:R+W > N – ACID,数据复制,CAP ,BASE
• 性能延迟是一致性“木桶”的短板 • 延伸:CQRS是完美解决一致性的出路吗?
二进制的优势和尴尬
• 二进制浮点数的分析层次
– 存储:DB、File、Process(无损) – 运算:精度控制 – 通讯:尺寸、转换(无损) – UI:金融行业特点,显示格式规范多
• HA级别
– 0秒级(<1-2s,零切换)、秒级(<10-20s,4级)、分钟级(>30-120s,3级) – 故障隔离技术:技术隔离、资源隔离、执行代码/数据隔离 – 故障转移技术:普遍基于系统故障,业务代码程序故障的困扰(降级运行)
• 延伸:部署设计对容错策略的重要性
定量化方法,手套还是锤子
• 数学约束下导致对IT环境系统限制的控制
– 随机数、模拟 – 机器时钟、IT现场环境数据 – 乱序、优先级
• 数学优势下赋予的系统高级能力
– Replay(保证流一致性,反演/回放、现场恢复) – Failover(容错、多活、热备、零切换)
• 延伸:多核心的数学模型和架构(参考)
{Ai , Oi} F (Ai-1, Ii ),交易核心F {B j , Vj} G(B j-1,U j),交易核心G
• 微服务架构模式已经称霸,伸缩是王道
– CQRS/ES + SAGA – 分布式命令总线(Command Bus) – 分布式事件/时序型消息总线(Event Store) – 分布式消息中间件(MOM\MQ) – 分布式数据组件/中间件:RDB + MDB + CacheDB + TSDB/OLAP
• 强大的武器库
– 数据模型:类型、对象、规范、状态、流程 – 协议模型:交互、对象、类型、限制 – 规则/流程模型:状态机、序列/泳道 – 质量模型:代码审核、覆盖率、缺陷分析、相关性模型 – 性能模型:进程/线程模型、并发模型、延迟模型 – 部署模型:架构模型、主机网络模型、数据流模型、故障模型、监控模型 – UML语言和UML工具、自动化代码生成工具
流,为什么是流
• 多维分析
– 交互模型角度:人机交互 ==> 自动化交易 – 数据模型角度:关系型数据模型 ==> 基于时间/事件的消息/指令模型 – 系统模型角度:多层次多功能模块化系统结构 ==> 面向消息流的分布式系统结构
• 消息协议分析
• 延伸:模型思想与模型工具到底是什么关系?为什么模型工具的效果总是不理想?
微服务,架构新目标
• 职责分离模式一再被架构调整中突破自我(技术架构发展路线)
– 单一系统,两层/多层结构 – 单一系统,前置+核心层次+管理子系统 – 单一系统,前置+交易核心+风险核心+管理系统 – 交易结算分离,门户+交易核心+风险核心+推送核心+管理服务 – 命令查询分离,前置服务+多交易业务核心+风险核心+消息服务+管理服务+。。。
Multi-Actor-Model + MQ(HA) + ES + SAGA q SAGA( p), p I p U
q O q V
一致性的成与败
• 又是时钟!
– 时间戳 – 逻辑时钟、统一时钟,向量时钟
• 参考模型
– 弱一致性、强一致性 – 顺序一致性、因果一致性 – 最终一致性与流一致性 – 算法:仲裁/自决方法,Paxos,Raft,Zab
交易系统架构思想回顾
核心概念和基础思想以及探究
Version 0.5
夏之春 金仕达技术总部 11/2018
目录
MDD
微 生定容快二一数流时
服 与量错,进致学,间
务 , 架 构 新
, 美 哒 哒
死 , 是 个 问
化 , 手 套 还
的 美 丽 迷 局
够 快 吗
制 的 优 势 与
性 的 成 与 败
本 质 论
• 全方位定量化
– IT:CPU、Mem、Disk、NC/IO、Net/Switch、Host/Storage – 应用:TPS、LAT、RPO/RTO、连接数、在线数、订单容量、持仓容量、风控计算频率 – 业务规模估算是一切定量化的重要计算基础和核心保障目标
• 传统1/10的高配原则
– 理由:高风险的应对实质是高成本的投入支持,就高不就地,这里没均值什么事 – 峰值喜好:历史峰值作为估算的正态化数值之一,理论峰值才是计算的边界 – 高配原则是系统架构信心的来源之一,也是其高端交易系统的尊贵品质
为 什 么 是 流
与 事 件
目 题是
尴
标
锤
尬
子
时间与事件
• 交易系统是一个什么时间观的世界
– 现代交易系统处于一个跨地域、跨时区、分布式IT时钟环境 – 物理世界的时间概念被运用于交易时段、交易规则、交易行为限制等方面,甚至包括交易日 – 时钟同步的必要性和局限性
• 现代交易系统的应对策略
– “宽进严出”、系统状态机、权限控制、流控 – 时间为表象、事件为实质 – 排队机/授时器/定序器
– 柜台(主席)系统,更期望 TPS优势,同时兼具LAT优势 – 二席(极速)系统,更期望LAT优势
• TPS与LAT在系统能力方面的矛盾性和相互促进
– 共同提高、相互平衡、跨越发展
• 度量方法和工具对“快”的保障和促进
– 微/纳秒精度下的时间刻度/多锚点计数捕捉 – 分布式跨机跨进程的(分段)延迟计时
– 请求/应答、轮询、广播/多播、推送、可靠推送 – 有序/持久化、单调递增、对象化消息、发布/订阅 – 接口契约化,违规风险巨大且不可控
• 金融交易业界里流模型的世界观、方法论
– 交易流(会话流)、私有流(会员流)、公有流(市场流) – FTD, FIX,STEP,FAST
• 目前新时代交易系统对流的理解和运用
快,够快吗
• 快的指标
– TPS – 每秒交易指令(处理)数,一般指交易处理核心模块里的指标 – LAT – 指定P2P端的消息延迟,一般指从系统边界进入的订单指令消息到从边界出来的订单结果消息之间的时间延迟 – 在分布式系统和并发访问模型下,TPS与LAT没有直接的严格数学关系
• TPS度量了系统模块的并发处理(容量)能力,LAT决定了目标系统对关键指令的反馈能力
• 核心概念:事件
– 事件概念的唯一性和可追溯性 – 事件的表达定义:时戳、编号、类型、名称、源、目的、行为/结果… – 前置事件、后置事件、并行事件、事件嵌套、循环事件、操作事件、状态事件、数据事件、失败事件、故障事件... – 事件驱动一切:订单、成交、行情、风险、决策/执行、开闭市、策略; – 定时器(授时)的运用,交易日/自然日的嫁接价值
• HA方向
– 程序代码/数据隔离、服务粒度独立 – 程序故障隔离和事故现场热处理 – 故障自动发现和智能决策
• 延伸:技术走向问题的纠结中,应该不忘寻根所有问题的来源
MDD,美哒哒
• 模型领域实践是交易系统架构历史上非常成功的实践领域
– 应对复杂性业务需求和组织化技术研发资源 – 稳定保证软件质量和品质控制的能力 – 提供精准管理和可信维护的技术理论方法
– 从消息交互模型转变为消息/数据服务模型 – 流实质是消息数据模型,可靠推送是最佳实践之一
• 延伸:帝国主义的FIX和开放世界的API
数学本质论
• 核心模型的数学公式 {Ti , Oi} F (Ti-1, Ii )
– F 系统模块代码空间,T 系统模块数据空间,i 事件 – I 模块输入消息/事件(序列),O 模块输出消息/事件(序列) – 系统参考模型:Single-Actor-Model + MQ(HA)
• 性能方向
– IT:主机、交换机、OS、CPU/Cache、IO、低延迟网卡、FPGA – 软件:Compiler、优化器、算法创新、流程改进、无锁用户态、RDMA、协程、OpenMPI\OpenMPI、LLVM… – 架构:一体化(反‘分布化)、软件模型(职责分离、并发模式、Flow)、低延迟网络互连架构
• 定量化的价值观
– 全面可控 – 高度可信 – 深度可见
• 延伸:定量化方法是优势性架构方法之一,但其不足和问题由谁弥补?
生与死,是个问题
• 问题提出
– 性能(Perf)对交易系统发展的核心源动力(类似人类对生命的无限渴望) – 可用性(HA)是金融领域的与生俱来的恐惧(类似人类对死亡的无边恐惧) – 技术无法克服,但可以提升适应和保障能力
• 延伸:多层架构、分布式架构、微服务架构、云原生架构都是在交易系统领域架构方法论的不同发展经历阶段
©2016 FIS and/or its subsidiarwk.baidu.comes. All Rights Reserved. FIS confidential and proprietary information.
• 主要适用的业务类型:金额、价格、比率(万分之15)、比值(1:13)、统计分析数值 • 金融领域的十进制数值使用要求 • 主流金融商用标准IT系统中二进制数值的运用标准
– 金融交易:二进制偏好 – 金融结算支付(会计):十进制偏好 – 金融工程:科学型偏好
• 延伸:十进制数值类型decimal是终极手段吗?
• 延伸:工具优先发展、快刀不是最快
容错的美丽迷局
• 冗余、备份、复制
– 数据冗余难度大于应用冗余难度 – 程序故障重要级别大于系统故障重要级别
• 故障分类和级别
– 系统故障,程序故障 – RPO(必须=0), RTO(尽量小)
• Failover的过程
– 故障发生、故障发现、故障转移、故障恢复 – 人工切换的巨大二次事故风险、自动切换(中心仲裁、自选举)的真正运维意义
• 理论
– RWN:R+W > N – ACID,数据复制,CAP ,BASE
• 性能延迟是一致性“木桶”的短板 • 延伸:CQRS是完美解决一致性的出路吗?
二进制的优势和尴尬
• 二进制浮点数的分析层次
– 存储:DB、File、Process(无损) – 运算:精度控制 – 通讯:尺寸、转换(无损) – UI:金融行业特点,显示格式规范多
• HA级别
– 0秒级(<1-2s,零切换)、秒级(<10-20s,4级)、分钟级(>30-120s,3级) – 故障隔离技术:技术隔离、资源隔离、执行代码/数据隔离 – 故障转移技术:普遍基于系统故障,业务代码程序故障的困扰(降级运行)
• 延伸:部署设计对容错策略的重要性
定量化方法,手套还是锤子
• 数学约束下导致对IT环境系统限制的控制
– 随机数、模拟 – 机器时钟、IT现场环境数据 – 乱序、优先级
• 数学优势下赋予的系统高级能力
– Replay(保证流一致性,反演/回放、现场恢复) – Failover(容错、多活、热备、零切换)
• 延伸:多核心的数学模型和架构(参考)
{Ai , Oi} F (Ai-1, Ii ),交易核心F {B j , Vj} G(B j-1,U j),交易核心G
• 微服务架构模式已经称霸,伸缩是王道
– CQRS/ES + SAGA – 分布式命令总线(Command Bus) – 分布式事件/时序型消息总线(Event Store) – 分布式消息中间件(MOM\MQ) – 分布式数据组件/中间件:RDB + MDB + CacheDB + TSDB/OLAP
• 强大的武器库
– 数据模型:类型、对象、规范、状态、流程 – 协议模型:交互、对象、类型、限制 – 规则/流程模型:状态机、序列/泳道 – 质量模型:代码审核、覆盖率、缺陷分析、相关性模型 – 性能模型:进程/线程模型、并发模型、延迟模型 – 部署模型:架构模型、主机网络模型、数据流模型、故障模型、监控模型 – UML语言和UML工具、自动化代码生成工具