高可用高性能系统(一)系统应用场景

来源:互联网 发布:wan微型端口驱动程序 编辑:程序博客网 时间:2024/04/29 07:34
   建设一个高可用高性能的系统是我最近几年的努力目标,但其中涉及的内容颇多,都是些零星的经验,缺乏系统性架构总结。写这个系列的文章其实是我一直以来的想法,不过题材和内容过多,所以一直搁置。前些日子到一家公司面试,备受打击,觉得有必要把它总结一下。
    我假定要为期货交易建设一个高可用高性能的系统,那么期货交易就是系统应用场景。期货交易的诸多规则我们没有必要理会,我们只需要简化出一个交易场景,需要使用高可用高性能的系统。之所以选择期货交易,是因为现在正供职于一家期货交易系统软件提供商,而且期货交易也需要这样的系统。
    我们假设的场景是这样的。有家期货经纪公司,需要为他的很多客户提供期货交易界面,这个界面需要连接到多个交易所。每个客户都希望以最短的时间从交易所那里获取行情,并提交交易合约。由于期货交易是T+0原则,所以延时和中断,都可能导致交易失败和大量的经济损失。每笔交易涉及金额可能十分巨大,千万甚至亿级别,所以不允许任何数据上的差错。
    上面的场景对全年不一定要求无中断,但在交易时间内对可用性要求同样苛刻。交易的实时性,对性能要求也是很高的。于是,为期货交易的场景建立高可用高性能的系统从应用需求角度来看,是完全足备的。
    当客户来到交易终端前,用自己的账户登录系统,查询下自己的资金,如果不够,那么需要转入更多的资金到经纪公司账户。界面上不断刷新各种合约以及新的行情,在合适的行情和合约出现时,这个客户期待以最快的速度吃下他,并期望能够获得马上的成交。
    可是,当客户提交交易请求时,经纪公司需要知道这个客户是否有足够的资金,否则经纪公司必然承当巨大的经纪损失。对于客户来说,当然希望这个过程足够短,否则就无法成交。
    经纪公司的管理人员需要知道现在有多少人在交易,成交了多少笔。每个客户是否把风险控制在可接受范围内。在行情失控的时候,我们需要让经纪公司在最短的时候内作出反映,以减少损失。