撮合系统设计调研(2)

来源:互联网 发布:unity3d室内场景建模 编辑:程序博客网 时间:2024/06/10 09:34

交易系统的目标

1) 高可靠性和高性能系统
高可靠性保证了交易系统的工作是连续性无中断的,任何一条交易指令及其响应都是按序到达的,不丢失的;同时交易系统也需要具备容错功能,能保证在系统出现了单点故障的情况下,仍能继续连续运行。高性能是指在大规模交易指令流的压力下,交易系统可正常工作。
2) 对多市场、多指令类型的支持
系统在体系架构上支持分类清晰的交易、清算规则,实现对多种交易模式的支持。系统在引入多种市场规则后,支持包括限价指令在内的止损和市价指令。
3) 提供良好的平台接入机制
交易所需要与以下几类外部访问者的信息交互:各种类型的交易者,银行,电信信息服务商,其他交易所。在新系统中将提供接入平台,让不同的访问者按要求的性能、可靠性和安全标准与交易所系统交换信息。
4) 交易时段灵活
在多市场、多品种的交易体系下,让不同的市场、不同的合约,遵循不同的交易时段,在交易状态的控制和管理上形成市场、交易品种的分层结构。可以单独地控制指定合约的交易状态,来应付一些局部的风险情况。
5) 业务创新和资源整合
交易规则和业务创新的调整将会使系统面临二次开发,二次开发的难度和工作量大小取决于系统设计时技术和业务架构的合理性。先进的技术和业务架构将使新业务推出时系统二次开发工作量较小,既缩短了业务创新的时间,又可以减少资源投入。
6) 业务易于扩展
首先,对已知的各种交易、清算和交收规则的分析和抽象,对己经了解的业务可通过参数配置的手段进行扩充。在此基础上,通过科学的业务架构和技术架构来支持未来以合理的成本投入来扩充未知业务

交易所业务领域

     交易业务域主要包含如下的业务职能:
     1) 交易状态控制:手工或者自动对交易中心、市场、合约状态进行控制。
     2) 交易参数的管理(品种上市、取消管理,合约上市、摘牌管理)。
     3) 合约风险控制参数管理(保证金,持仓限额)。
     4) 市场参与者管理(会员开户、注销管理,客户开户、注销管理)。
     5) 撮合管理{管理交易撮合过程中的交易状态,席位,会员,客户的交易权限,强制平仓管理,强制减仓管理,以及其他在交易过程中发生的异常情况}。
     6) 撮合业务(订单录入,订单验证,撮合,成交回报,行情产生及发送)、
     7) 查询统计

     结算业务域
     大多数交易所实行每日无负债结算制度。当日交易结束后,对每一会员的盈亏、交易保证金、税金和交易手续费等款项进行结算。

     交割业务主要包括如下事务:
     1) 现货仓储、检验的监督管理。
     2) 仓单流转处理(预报、注册、冲抵/清退、质押、交割和注销)。
     3) 品种的交割方式管理。
     4) 交割及交割违约管理、交割及相关信息发布

     其他业务域
     包括市场数据业务域、风险监控业务域、统计分析业务域、一站式会员服务,等等。

      参与者

     市场组织

     市场状态变迁

     委托流程

交易系统设计目标

     先进的技术和业务架构将使新业务推出时系统二次开发工作量较小,从而既缩短了业务创新的时间,又减少了资源投入。

交易系统架构设计

    任务模型:

     Front可以运行多个实例,以实现负载均衡和热备能力。Switch和TKernel可以运行两个实例,提供热备容错能力。所有模块运行在同一台服务器上,但是这种情况下不能提供系统级的容错。比较合理的运行部署是采用两台服务器, Front、Switch和TKernel均匀地分布在两台服务器上,仲裁中心和中心数据库则分别单独运行。

 

     网络调度子系统(switch)是系统的通信核心,各模块通过网络调度与其他模块进行通信。网络调度同时又是系统一致性和容错机制的关键,通信指令经过网络调度后,能以同样的顺序,一致地到达交易核心模块和数据同步模块。

     仲裁中心子系统(arbitrator)负责控制多个网络调度实例的工作状态,确保一个时刻有且只有一个实例处于主工作状态,在系统部分实例发生故障时能及时切换系统状态,使系统具有热备容错能力。

     数据同步子系统(DBTM,MTDB)负责维护交易核心和数据库之间的双向的数据同步:交易核心发生的对数据的修改,通过数据同步模块更新到数据库;交易管理系统和其他外部系统发生的对数据库中交易相关的数据的修改,也通过数据同步模块读取并通知到交易核心。实际实现中,这个模块分成两个单独模块,分别负责从内存到数据库(mtdb)和从数据库到内存(bdmt)这两个方向的数据同步,并负责生成系统运行所需的初始数据文件。

     交易核心子系统(TKerne)l负责处理交易指令并维护所有交易相关数据,核心业务是报单处理、撮合、成交回报和行情生成等。各种不同的交易模式,都在这个模块内实现。

     交易前置子系统(Front)提供客户端系统和服务端系统的灵活接入,同时进行有效的隔离和基于应用的数据分发。运行多个交易前置可实现负载均衡和容错,在当前体制下,客户端系统可识别交易前置的状态,并在发现故障的情况下自动切换到正常的交易前置。

     交易终端子系统(Trade)是交易员进入交易系统进行交易的模块,运行在Wnidows环境下,提供C/S模式下客户端程序场内和场外两种访问模式,具有行情浏览、数据查询、委托、成交回报等基本交易功能。

     监控终端子系统(Admin)是市场管理人员对交易过程进行监控的模块,监控功能包括交易状态控制、强制平仓控制、交易数据查询、风险预警、仓位控制等。

反应式框架模型

     “反应式框架”是指:通过同步等待多种类型事件源的指示事件的到达,并将事件多路分解以及对分配机制进行集成,最终达到“不依赖于应用的事件多路分解”和“分配机制不依赖于应用的事件处理策略“相分离的目的。

     优点:
           通过同步事件多路分解器同时处理多个服务请求,可以使用单线程来响应所有客户请求,避免了多线程的复杂性,同时效率上没有明显的降低。
           通过框架提供的反应器一同步事件多路分解器,负责同步各种事件源的指示事件,并将它们多路分解给负责处理这些事件的程序,从而使“低级的事件检测,多路分解和分派代码”和“应用相关的事件处理代码”有效地分离,提高了框架的复用性。

系统可靠性模型

1) 双工系统

     指两个独立的网络通讯节点具有相同的功能,部署在两台主机上,都可以独立完成所有的计算任务,并且保持同步,其工作机制如下:

     1.如果A节点与B节点均正常运行,则两个节点均作为主节点,两个节点都要接收请求消息、响应消息和通知消息,进行统一排序,进行相应的处理,在检测点同步日志,选取一个主节点根据路由配置转发。

     2. 如果A节点正常而B节点故障,亦将A节点的运行结果作为系统输出,同时将B节点的运行故障状态报告给A节点,并向B节点进行复位控制操作。

     3.如果A节点故障,B节点正常,则进行开关切换操作,B节点进行系统备份任务重调度,B节点运行结果作为系统输出,并向A节点进行复位控制操作,在检测点更新A节点日志,保持需要备份的任务状态一致。

2) 主从备份

    其工作机制如下:两个冗余的节点,分为主节点和从节点(又称备节点),主、从节点都接收请求消息、响应消息和通知消息。正常工作情况下只有主节点对服务请求进行处理,进行统一排序,进行相应的处理,根据路由配置转发,执行完毕后取消从节点中的该请求。从节点执行备份功能,不处理服务请求。只有当主节点失效时,从节点才接替主节点对服务请求进行处理。主节点恢复后,继续由主节点对服务请求进行处理,从节点转入备份功能。

3) 备份加仲裁

    主从节点任何一个出现故障时,都可以通过仲裁节点的决策,使得另一个节点立即接管故障节点的全部工作,保证通讯的安全可靠。仲裁节点是主从节点状态切换的决策机构,它根据主从节点的工作状态、网络状态和状态演变图,决策状态变化或强制其中一个节点退出工作。同时仲裁节点也能够检测与主从节点的通讯连接状况,自动进行错误检测,根据检测结果发出状态切换指令。

系统可靠性需求分析

1) 平台容错性
    平台自身由两个网络调度系统和一个仲裁系统组成,网络调度只是在启动和切换过程时才依赖仲裁系统。任何一个网络调度终止后,另外一个网络调度马上接管其工作。这种切换对业务应用层透明,不影响业务应用的开发和运行。
2) 保证消息的可靠性和有序化
消息可靠有序传输是容错的基础。无论切换或重启,容错平台总能为
应用层提供可靠的、有序的消息包。
3) 自身状态的恢复
当平台停止重启后,平台自身能恢复到终止前的状态。
4) 日志服务
容错通讯平台在日志文件中记录了全部交易流水,日志流水方便了在该平台上建立的应用系统的开发调试,自身异常情况下的状态恢复。

容错通讯平台的架构设计

     容错通讯平台由两个网络调度系统和一个仲裁系统组成的。两个网络调度系统分别运行在主机和从机状态['7M'”],由一根心跳线相连。任何一个出现故障时,通过仲裁系统的决策,另一个可以立即接管其全部工作,保证通讯的安全可靠。仲裁系统根据网络调度系统的状态汇报和已发现的网络连接情况,及时做出决策,使得网络调度系统进行状态切换。若不使用仲裁系统,则心跳线中断后两个网络调度系统都将切换为主机状态,相当于交易系统分裂成为两个。因此,网络调度状态切换时必须得到仲裁系统的认可。

容错通讯平台的网络调度

     容错平台的网络调度进程是通过状态机模式实现的,它的状态变换是通过接收仲裁进程的指令进行改变的,状态转换是实现容错的核心。不同的状态下对同一事件有不同的处理方式。通过错误检侧,每个进程对检测到的故障结果汇报给仲裁进程,仲裁进程根据当前状态信息做出决策。然后发送给相应网络调度进程进行状态切换。

     网络调度进程共有六个运行状态,状态转换图如下:

1. 启动:读取配置信息,日志恢复。
2. 初始状态(INIT):日志恢复完毕,运行环境构建完成后,系统进入初始状态,初始状态的主要功能如下:
    1) 定时向仲裁进程进行状态申请(包括日志状态情况),并等待仲裁进程的指令返回。
    2) 当仲裁指令为单机状态时,打开对外部设备和主备节点监听端口。
    3) 等待仲裁进程返回指令。
3. 备节点准备状态(SR),其主要功能为:
    1) 根据仲裁进程返回的指令,进入准备状态,尝试与主节点建立连接。
    2) 主要完成和主节点的日志同步,这种状态下不接收外部应用的连接。
    3) 接收仲裁进程指令,打开对外部应用的监听端口,转换为备节点状态。

4. 单机状态(SS),是一个正常可运行状态,在进入主节点状态前首先进入单机状态。在这个状态下可以进行消息包的输入和输出。其主要功能为:
    1)接收外部应用发来的消息包,记录日志,根据路由转发到相应的应用。
    2)接收备节点的连接请求,完成与备节点的同步。
    3)判断备节点的日志复制情况,向仲裁进程发出状态转换申请。
    4)接收仲裁进程指令,转换为主节点状态。
5. 主节点状态,简称DP。在该状态下只接收外部应用消息的输入,而不向外部应用进行消息的输出。其主要功能为:

    1) 接收外部应用发来的消息包,放入备节点缓冲,并发送到备节点。
    2) 接收备节点的确认消息,从缓冲区删除相应的请求消息,记录日态,根据路由转发到相应的应用,数据流参见图5.13。
    3) 通讯检测,在与仲裁连接正常德情况下,向仲裁进程汇报检测结果。
    4) 接收仲裁指令,现场处理(包括与外部应用进行通讯同步)完毕后,转换为单机状态。
    5)通讯检测,在与仲裁和备节点失去联系的情况下转换为孤立状态。
6. 备节点状态(DS),在该状态下只接收主节点消息的输入,而不接收外部应用的输入,同时向外部应用进行消息的输出。其主要功能为:
    1) 接收主节点发送的消息包,记录日志,根据路由信息发送到外部应用,并返回一个确认信息给主节点。数据流如下图。


    2) 通讯检测,在与仲裁连接正常德情况下,向仲裁进程汇报检测结果。
    3) 接收仲裁指令,现场处理(包括与外部应用进行通讯同步)完毕后,转换为单机状态。
    4) 通讯检测,在与仲裁和备节点失去联系的情况下转换为孤立状态。
7. 孤立状态(SL),该状态是主(备)节点同时失去与备(主)节点现期货交易系统研究与实现一高可靠性,高性能的交易系统和仲裁的连接时,进程不马上终止,而是进行现场清理完毕后转为初始状态。其主要功能为:
    1) 切断与外部应用的连接。
    2) 现场缓冲的清理。
    3) 关闭对外部应用和另外一个节点的监听端口。
    4) 记录日志的当前状态。

    5) 切换到初始状态

容错通讯平台的故障检测

     容错平台的三个进程(主节点网络调度进程,备节点网络调度进程,仲裁进程)在进行故障检测时是相互的,每个都能最终感知对方的失去。容错平台的三个进程可以看作三个节点,每个节点都定时向对方发送心跳消息(一种特殊类型的网络包,作用是同步)。当一个节点在连续三个超时时间内没有收到从节点发来的保持连接消息时,该节点就认为对方节点此时己经失效了,或者立刻收到连接坏掉信息,则认为对方节点此时已经失效了。此时会将检测结果汇报给仲裁,或由仲裁自行发现,仲裁根据汇报或发现结果进行决策。当一个节点无法与仲裁取得联系后,将转换为孤立状态,最后转换为初始状态

1. 主备节点连接断开

    主备节点分别向仲裁进程汇报检测结果,仲裁进程根据汇报结果,向备节点发出进程终止指令,备节点收到终结指令后,进程终止。

2. 主节点与仲裁连接断开

    1)主节点一直尝试与仲裁建立连接。
    2)仲裁进程发现在规定的时间内,主节点不能建立连接,通过备节点向主节点发出进程终结指令。
    3)备节点发现主节点失去连接,向仲裁进程汇报。
    4)仲裁进程向备节点发出切换为单机状态指令

3. 备节点与仲裁断开。
    处理过程同主节点与仲裁断开。
4. 主(备)节点与仲裁和备(主)断开

    1)主节点的两个连接同时断开,即两个连接断开前未收到仲裁进程发送的状态切换指令。
    2)主节点转换为孤立状态。
    3)仲裁进程向备节点发出转换为单机状态指令。
5. 瞬间所有链接都断开

    当所有连接都断开时,主、备节点分别转换为孤立状态。保存现场环境信息,当能够与仲裁建立连接后,由仲裁进程来根据状态汇报决定每个节点的主备状态。

0 0
原创粉丝点击