zoukankan      html  css  js  c++  java
  • 股票证券交易系统架构分析与设计

    根据之前参与了一个国家级证券交易所新一代交易系统的经历,画了一个交易所基本架构图,如下:

    名词解释:

    0. STEP协议是什么?
    STEP: Securities Trading ExchangeProtocol,是中国金融行业数据通信标准JR/T0022-2004,目前被深圳交易所采用,作为LeveII数据向信息服务商分发的数据的标准协议。

     其实,这个交易所支持多种证券交易协议,包括:FIX,FAST协议。

    1. FIX基本介绍
    FIX--The Financial Information eXchange ("FIX") Protocol,金融信息交换协议.是针对交易相关消息的规范。在银行、券商、交易所、投资机构、相关业间应用非常广泛。这些市场参与者基于统一的语言进行自动交易。
    fix是工业驱动的消息标准,它是开放和自由的,但不是一套软件。而是一个规范,各厂商基于规范开发相应的软件。作为在交易通信中的主导协议,fix与其它的订单处理系统、交易系统融合。fix协议有两层:会话层和应用层。会话层主要是负责传输数据,而应用层则是处理相关的业务数据。

    2.FAST协议
    FAST(FIX Adapted for Streaming) ,其核心是一个压缩算法,将按照fix规范定义的数据经过压缩以后,可以在很大程度伤降低发送、接收双方的带宽。

     交易所对稳定性和性能,有极高的要求,这就对架构设计能力有很高的考验,有幸参与这一个有意思的过程,其实,里面的架构师都是来自微软,ebay,IBM的一线架构师,其中Ebay的架构给了我们不少启发。

    首先说说我们的最终达到的成果吧:

    目前可容纳的投资者账户数超3亿个,证券数量从原有系统的5千只可扩大至5万只,容量扩大了10倍。并且具备每秒30万笔、每日超4亿笔委托的处理能力,是原有系统的3倍。新一代交易系统将平均委托处理时延约为1.1毫秒,仅为原有系统的百分之一,而五年总体成本仅是原有系统的1/3。     

    这个架构核心思想也是借鉴EBAY架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

    但证券交易系统对数据一致性有更高要求,但交易所不缺钱,很多高性能,高可用都是用很贵的硬件堆起来的。

       

    BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。

    基本可用(Basically Available)

    基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

    电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。

    软状态( Soft State)

    软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。

    最终一致性( Eventual Consistency)

    最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

    ACID和BASE的区别与联系

    ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。

    ACID和BASE代表了两种截然相反的设计哲学

    在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。

    参考资料

    CAP和BASE理论

           

    本人精通java高并发,DDD,微服务等技术实践,专注java,rust技术栈。 本人姓名郭莹城,坐标深圳,前IBM架构师、咨询师、敏捷开发技术教练,前IBM区块链研究小组成员、十多年架构设计工作经验,《区块链核心技术与应用》作者之一, 现聚焦于:区块链创投与交易所资源对接和技术咨询。 工作微信&QQ:360369487,区块链创投与交易所资源对接,加我注明:博客园+对接,技术咨询和顾问,加我注明:博客园+顾问。想学习golang和rust的同学,也可以加我微信,备注:博客园+golang或博客园+rust,谢谢!
  • 相关阅读:
    Ant Design Pro V5 + Django Restful Framework Token认证后台实现(二)
    Ant Design Pro V5 + Django Restful Framework Token认证后台实现(一)
    D365 FO产生随机字符串
    D365 FO Array增加排序
    转:Microsoft Dynamics AX内部版本号概述
    vue 组件通信总结
    脑图
    Flask 和 Django 中间件对比
    k8s 理论知识总结
    Flask 源码简析
  • 原文地址:https://www.cnblogs.com/gyc567/p/10953883.html
Copyright © 2011-2022 走看看