基于内存计算的分布式实时事务管理性能优化研究(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-03 08:07:02

点击下载

作者:王寅峰,钟桂全

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于内存计算的分布式实时事务管理性能优化研究

基于内存计算的分布式实时事务管理性能优化研究试读:

内容简介

本研究在广东省自然科学基金和深圳基础研究项目资助下,以金证科技股份有限公司在核心订单业务系统开发中的具体实现为基础,分析了在生产实际环境中高频在线交易应用与体系结构支撑方面的需求。针对风控与事务持久化的具体要求,以内存计算与混合存储作为事务计算的系统支撑,针对加速交易处理的实际要求分析了复杂交易平台的处理架构与具体设计中11个核心技术方面的研究工作,反映了在分布式计算应用领域—金融计算中取得的新进展。

未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。

版权所有,侵权必究。

图书在版编目(CIP)数据

基于内存计算的分布式实时事务管理性能优化研究/王寅峰,钟桂全著.—北京:电子工业出版社,2019.9

ISBN 978-7-121-35780-0

Ⅰ.①基… Ⅱ.①王…②钟… Ⅲ.①数据管理系统—系统优化—研究 Ⅳ.①TP317

中国版本图书馆CIP数据核字(2018)第285946号

责任编辑:贺志洪(hzh@phei.com.cn)

印  刷:

装  订:

出版发行:电子工业出版社

     北京市海淀区万寿路173信箱 邮编 100036

开  本:787×1092 1/16 印张:9 字数:230.4千字

版  次:2019年9月第1版

印  次:2019年9月第1次印刷

定  价:36.00元

凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。

质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn。

本书咨询联系方式:(010)88254609或hzh@phei.com.cn。前 言

近年来,国内证券市场发展迅猛,越来越多的人开始投资股市,随着证券市场的成熟,越来越多的基金业务开始涉足算法交易、高频交易等技术较为高深的交易领域。这些交易多由计算机执行分析师构建交易策略,计算机执行分析师在快速波动的行情中寻找交易机会,并在极短的时间内完成下单。由于国内交易所存在支持订单类型单一的缺陷,金证复杂交易平台应运而生。复杂交易平台旨在为算法交易、高频交易等提供复杂订单支持,如条件单(Condition Order)、止盈止损单(Stop Order)等,由于算法交易等捕捉的交易机会稍纵即逝,对复杂交易平台的性能有很高的要求,因此需要对复杂交易平台进行优化。

第一,本书对量化交易进行综述。量化交易最早始于20世纪70年代,主要服务于指数套利和组合管理领域;经历了40多年的发展,量化交易已经形成了大量交易算法,帮助投资者制定投资决策、减少执行成本、进行套利和风险对冲,以及帮助做市商实现报价功能。在国际市场上,股票和衍生品市场的量化交易已经占到全部交易活动的70%,外汇市场稍稍落后,尚不足2/3,债券市场量化交易仅不到10%。量化交易系统技术在量化交易中的作用体现在以下几个方面:①速度快、交易效率高;②最大限度克服人性弱点;③便于进行交易成本的管理;④便于进行交易风险的控制;⑤对市场机会的精细化把握,使复杂的策略得以执行。本书同时介绍了常见策略衡量指标:收益率、夏普比率,以及交易后策略执行的成本和表现分析指标。

第二,本书根据加速交易的要求分析了复杂交易平台。由于系统采用的轮转调度没有考虑订单长度的差异,以及订单触发时间的不确定性,造成了各线程间负载不均,进而影响系统性能,因此本书选择基于调度与负载均衡来优化系统。通过结合订单具体处理过程,提出了最小负载调度算法,具体描述了如何根据线程负载表将订单分配到当前负载最小的线程,使得各线程负载相对平均,同时设计了负载迁移机制,使用各线程负载的标准差作为负载评价指标,设置合理阈值,根据订单执行情况动态调整负载。为了不影响订单执行的时效性,负载迁移首先从预埋单开始,从而缩短订单等待时间,提升订单触发效率,进而提升整个系统性能。

第三,在单机性能无法满足交易需求的情况下,本书应用数据一致性理论,设计了一种基于Raft协议的分布式证券交易系统架构。通过Raft一致性协议在多节点间维护多个数据副本以确保系统的高可用性,同时分布式多节点的系统环境也可有效地拓展系统的处理规模。

第四,本书从生产实际环境中高频在线交易应用需求与体系结构出发,展开了10项核心关键技术的研究:①前端账户系统优化参数配置和数据报表查询同步方法;②以客户业务为主导的流程驱动式业务处理引擎;③设计代码自动生成操作数据库代码;④内存数据库多表联合查询模块优化;⑤分布式多活内存交易系统的数据一致性方法;⑥海量高维数据有偏索引模型的构建与优化;⑦基于缓存的中间件测试方法;⑧交易处理中重复数据删除方法;⑨异步日志处理;⑩灾备恢复等研究,并对开发过程进行了评价。

第五,本书具体描述了所研究技术在金证科技核心订单业务系统开发中的具体实现。最后对本研究进行了总结与展望。

在本研究中借鉴了张育军所著《上海证券交易所联合研究报告2011》对数据一致性、交易架构方面的描述,深交所邹胜总经理在多个论坛所做“深交所第五代交易系统”相关的报告内容,金证科技相关订单系统设计文档、结合生产实际申报的多项国家发明专利内容,以及作者近年来发表的相关学术论文,并参考了参与本项目的研究生王龙翔、刘成哲、黄凯、郭福良所著的硕士毕业论文中的具体算法和测试数据,其他具体参考内容在参考文献中标出,在此一并表示感谢。

由于编者水平有限,加之技术更新演进日新月异,疏漏之处恐难避免,恳请读者不吝赐教。

关键词:证券;高频交易;复杂交易系统;调度算法;负载迁移;Raft协议第1章 绪 论

2016年上半年,深圳证券交易所(简称“深交所”)成交笔数超过美国纳斯达克,以18.98亿笔的成交量跻身全球成交笔数排名第一的证券交易所。2015年,深证成分指数上涨了9.93%,成为全球增速最快的证券交易市场之一,全国股票和基金交易共实现270.86万亿元的交易额。深交所业务的高速发展除依托中国证券市场的高速发展外,2016年6月6日,深圳证券交易所第五代核心交易系统正式投产和成功运行,这套自主研发的交易系统全面引入开放架构,目前可容纳的投资者账户数超3亿个,证券数量从原有系统的5千只可扩大至5万只,容量扩大了10倍。并且具备每秒30万笔、每日超4亿笔委托的处理能力,是原有系统的3倍。新一代交易系统平均委托处理时延约为1.1毫秒,仅为原有系统的百分之一。深交所第五代核心交易系统的投入使用,不仅意味着深交所交易系统在自主可控能力、市场规模、日处理委托容量、安全可用性方面已跻身世界第一梯队,可以支撑深交所未来十年的业务创新,也标志着我国证券交易已进入全新的“高铁”时代,全面提升了深交所在全球证券市场中的核心竞争力和自主创新能力。这些核心业务系统的升级换代对深圳区域证券产业和系统开发者提出了新的技术要求。

深交所核心交易系统原运行在Non-stop主机上第五代核心交易系统全部转向了X86服务器平台,操作系统也转向了Linux,以容错主机为中心也转向以高速消息总线为中心,这样就从集中式处理全面转变成分布式处理。本研究在深圳市科创委和深圳财委的支持下,通过与国内科技金融的领军企业深圳市金证科技股份有限公司(以下简称“金证”)深入合作,面向国内金融、证券、电信等行业核心业务系统对事务处理实时性、安全性、高可用的严格要求,研究开发“毫秒级交易响应、百万并发在线、99.999%可用”的基于内存计算模式的分布式实时高可用事务管理关键技术,并在金融、证券等行业实现了产业化推广应用。1.1 高频交易及复杂订单交易平台

1.高频交易[11,12]

高频交易是指从那些极为短暂的市场变化中寻求获利机会的计算机程序化交易,随着国内证券市场的不断发展及高性能计算机系统的普及,一些机构与基金越来越倾向于用这种方式进行交易。高频交易有几大特点:① 借助高速的计算机系统下订单;② 平均每次持仓时间极短;③ 大量发送和取消订单;④ 收盘时基本保持平仓,即不持过夜仓。证券高频金融交易数据的主要特点为实时性(Real-[13]time)与大规模(High-volume),通常沪深两市每天4小时的交易时间会产生3亿笔以上成交数据,2014年12月5日两市交易额首次突破万亿元,2015年6月达到日均万亿元以上。

要想用高频交易的方式获利,一方面要有好的交易算法,另一方面很多基于机会的交易策略要分析当前的行情来安排后续交易,这样的交易策略需要有低延迟的行情数据和交易系统,那么为什么要低延迟呢?首先,针对行情数据,如果当前的行情数据延迟是两秒钟,那么用户看到的行情就是两秒之前的市场情况,真实的市场行情可能完全不一样,如果交易算法基于这样的行情数据下达交易指令,那么结果将很不乐观。假设行情数据延迟为零,那么所有的交易指令将不会存在偏差,实际上任何行情数据都会存在延迟,即使使用上海交易所Level 2行情,也有延迟,只不过延迟较低而已、行情延迟的问题对任何人来说都存在,因此可以假设这个延迟是相同的,大家都站在同一起跑线上,只有使用更低延迟的系统,才可以在竞争中胜出。

其次,交易系统本身也需要低延迟,如果一个交易指令花了相对其他券商更长的时间才提交到交易所,此时短暂的交易窗口早已经失去了。因此很多券商为了降低网络延迟,将自己的机器放在离交易所很近的地方。除降低网络延迟外,还有操作系统的延迟,这两种延迟对于所有交易者而言都是差不多的,最终的差别还是体现在交易系统的延迟上,所以券商都非常重视低延迟交易系统的研发。

2.复杂订单交易平台

订单业务处于证券交易的核心位置,所有的交易都围绕它进行。深入研究交易委托账簿,观察市场的微观特性,这是在制定交易策略时的最重要的一步。在实际交易中还要研究交易委托账簿来观察交易策略的执行情况。

国内交易所与国外有许多不同,以纽交所与上交所为例,上交所仅仅支持普通买卖订单、分市价限价,而纽交所还支持一些复杂的订单如止盈止损单、预埋单等。止盈止损单就是客户在买卖价格之外另外设定一个止盈止损价,当市场价格达到止盈止损价后(买单是市场价≥止盈止损价,卖单是市场价≤止盈止损价),订单才会执行。例如,某投资者有100000股工商银行601398的股票,假设现在市场价格为4.62元每股。一个理性的投资者,需要时刻牢记风险,因此他想用下一个止损单来避免市场大幅下跌带来的风险,止损单的止损价是4.42元,止损单的卖出价格是4.40元。当市场价格下跌到4.42元的时候,止损单被触发,交易所此时开始处理这笔订单,帮助客户进行止损。预埋单是设定一个执行时间,当时间到达以后订单才会执行。

类似上述订单是交易策略中常用的订单,但是这些订单在国内上交所或深交所并不能被直接执行,因为交易所从安全策略的角度并不支持这样的订单。为了满足用户对风险的控制及逐利的要求,机构在使用这样的交易策略的时候有两种选择。一种选择是直接实现,在策略系统之外构建另外的业务层来处理这些复杂订单,但是这样会让机构的系统变得格外复杂,不能专注于策略的实现,而且对于所有的策略使用者而言,复杂订单的处理方式都是相同的,重复实现会造成资源浪费;另一种选择是由券商实现,券商就是经纪商,用户的订单都要经过券商才能到达交易所,如果券商的系统支持复杂订单,那么机构就可以选择接入券商的系统,从而免去了直接实现的烦琐流程。同时,券商的系统面向所有用户,任何用户只要需要这种服务都可以向券商购买,这样也避免了用户重复开发造成资源浪费。

国内券商开始主要面向散户投资者,系统也是以普通买卖交易为主,但是券商已意识到低延迟的交易系统的价值,部分券商专门为VIP客户提供快速交易系统,这样的系统采用了较先进的技术如内存数据库等,保证对订单有更快的处理速度。另外,券商开始认识到复杂订单的重要性,开始研发新的系统支持复杂订单,这些订单涉及交易策略的执行,因此系统执行必须低延迟而且要接入高质量的行情,如前面提到的上交所推出的Level 2 行情。对于券商而言随着人们对稳健获利热情的不断高涨,未来的用户将越来越多。1.2 研究内容

复杂交易系统有很严格的性能要求,复杂交易系统的性能由两方面因素保证:高质量的行情与较高的处理速度。首先复杂交易系统接入了Level 2行情,比普通行情快很多,其次复杂交易系统采用组件化的思想开发,每种复杂订单作为一个业务组件,不同的组件互不干扰,组件内部采用并发的方式处理订单,用于保证较高的处理速度。但是对性能的追求是没有止境的,如何通过研究复杂交易模型分析复杂订单的处理过程,找出其中的不足加以优化,加快交易系统处理速度,提升性能,是系统要解决的重要问题,也是本研究的重要研究内容。本研究的主要工作包括以下3点。

① 深入介绍了证券交易领域的基本概念,以及高频交易、算法交易等交易的基本原理,以金证公司复杂交易平台COS系统为例分析了证券交易的架构、业务处理逻辑,以及复杂订单的特性。

② 由于复杂交易系统采取的轮转调度没有考虑订单长度的差异,以及订单触发时间的不确定性,造成了各线程间负载不均,进而影响到系统性能,因此选择基于调度与负载均衡来优化系统。通过结合订单具体处理过程,本研究提出了最小负载调度算法,该算法根据线程负载表将订单分配到当前负载最轻线程,使得各线程负载相对平均,同时设计了负载迁移机制,使用各线程负载的标准差作为负载评价指标,设置合理阈值,根据订单执行情况动态调整负载,从而缩短订单等待时间,提升订单触发效率,进而提升系统性能。

③ 探索研究分布式理论,以及一致性协议应用在证券交易系统的可行性。将证券交易系统由单机环境向分布式进行横向拓展以提升系统整体的处理效率,同时通过Raft一致性协议对系统节点间的数据进行同步以确保系统的高可用性。重点针对证券交易系统业务逻辑层,设计实现了一种基于Raft协议的分布式证券交易系统架构。

此外针对系统具体实现从前台业务逻辑到后台数据库一致性、索引、日志、备份等10个方面的关键技术进行了描述,给出了具体实现的方式。1.3 研究组织架构

本研究共分为8章,各个章节的主要内容如下。

第1章为绪论。本章主要阐述了本报告的行业背景,包括国内外证券市场的基本情况、股票交易的基本原理,以及高频交易和复杂订单交易平台的现状和发展,然后简要说明了报告的主要工作和组织结构。

第2章是相关技术分析。首先介绍了用于开发复杂交易系统的微架构平台,然后介绍了复杂订单交易过程中涉及的系统平台,最后介绍了内存数据库的相关概念,并列举分析了当前证券领域主流的内存数据库及技术。

第3章针对量化交易系统技术与应用研究综述,描述了量化交易系统技术在量化交易中的作用,同时介绍了常见策略衡量指标:收益率、夏普比率,以及交易后策略执行的成本和表现分析指标。

第4章针对调度与负载均衡的优化。本章首先分析了复杂交易系统任务分配模型,然后提出了一种改进的调度算法,同时设计了负载迁移机制,并在原始系统上实现了改进,完成了系统优化。

第5章基于Raft协议的分布式证券交易系统架构设计。首先介绍了Raft一致性协议并与经典Paxos协议相对比,其次以金证订单系统为例对证券交易业务处理流程进行了详细介绍,在此基础上提出了基于Raft协议的分布式证券交易系统架构设计,并且给出了Raft协议在所设计系统架构中的部署与实现方法。

第6章分析基于内存计算进行事务处理实时性优化方面包括:通过导入XML文件到数据库自动生成菜单配置与查询功能的方法,基于以客户业务为主导的流程驱动式业务处理,基于PowerDesigner物理概念模型能自动生成数据库对应操作的C++代码方法,内存数据库中多表联合查询模块优化方法,基于分布式多活内存交易系统的数据一致性方法,海量高维数据有偏索引模型的构建与优化,交易重复数据删除方法,基于缓存的中间件测试方法,异步Java日志生成方法及系统,基于LBM的异构主备系统,对项目质量的评价等11个方面。

第7章具体描述了内存计算技术在实际系统中的应用,并以金证科技核心业务部门订单系统为例介绍其软架构及相关技术的特点。

最后总结了本报告的研究工作并给出相关结论,指出了有待改进的地方,并提出了下一步的工作建议。第2章 相关技术分析

采用传统IOE模式搭建证券公司独立的交易平台,不仅系统投入较高,且存在与其他平台进行对接的问题。因此,行业急需建设适应新业务、互联网证券等发展需要的、面向证券公司开放的互联网证券开放平台,为证券公司提供定制开发、软硬件托管、技术运营等一揽子服务,方便公司快速开展创新证券业务。本章首先介绍了基于组件化进行程序设计的微架构技术,然后简要介绍了复杂订单交易过程中涉及的系统平台,重点介绍了内存数据库的相关概念,并列举分析了当前证券领域主流的内存数据库及技术,随后介绍了与分布式系统设计相关的数据一致性理论,包括:CAP理论、BASE理论、数据一致性模型,以及经典的一致性协议,最后简单介绍了几种有代表性的大规模分布式存储架构设计并剖析其设计特点。2.1 微架构

随着计算机技术的不断发展,软件开发的速度越来越快,规模也越来越大,新出需求层出不穷,软件升级换代也不断加快。传统的开发方式在现代多样性的需求面前显得力不从心,于是组件化的程序设计方法就诞生了,微架构正是这样一种敏捷的程序设计方式。

1.MA(Micro Architecture)微架构

微架构技术是在开发过程中以具有特定功能的组件为基本单位,通过接口将其连接组合形成能提供特定服务的信息传输处理链,进而集合多个服务链形成系统,而且组件可按需求拆除更换或增加的系统架构技术。

2.微架构的优势

微架构的组件化思想可实现对系统功能的按需装配。组件的装配由微架构中的微内核完成,微内核启动之后根据外部配置连接各个组件以实现各种功能。

微架构技术相比传统的开发思想及方法具备了许多优势,有以下几点。

① 微架构技术能够以完善的组件库为基础,通过平台组件化,以及业务组件化实现系统的灵活装配,插件式的组件添加/更新不影响当前系统的正常运行,保证了系统的稳定性。

② 微架构支持定制开发。对于不同客户的个性化配置要求,能够通过差异化组件的拼装部署来完成。

③ 微架构中组件版本的管理更为完善,基于对标准化接口及对多种版本的支持,能够降低运维成本,同时升级更为方便。

④ 基于标准化接口技术,微架构构建的系统能很好地支持集控管理,便于配置及修改参数。

⑤ 微架构在公共组件工具的沉淀和积累基础上,能够实现新业务系统的快速搭建,支持了业务的可持续发展。

订单系统(复杂订单、普通订单)需要基于客户个性化需求量身[14,15,16]定做其专用版本,然而基于CAP理论(Consistency,Availability and Partition tolerance),受限于当前网络通信、硬件技术条件,系统无法同时满足高可用、高性能及一致性3个要求。因金融交易的特点,其中一致性是必须要达到的,可以针对当前对于高可用和高性能的需求侧重,设计出高可用版订单系统或高性能版订单系统。2.2 复杂交易平台架构

1.COS系统

COS(Complex Order System)复杂订单系统是复杂交易平台的核心,负责处理复杂订单,同时为普通订单提供通道功能。

交易策略服务器主要支持账户管理、交易路由、交易策略、实时风控等功能,接受行情与交易数据,支持多种外围设备接入。交易策略服务器会根据交易策略准确、快速下订单,并根据交易仓位主动调整交易策略。交易策略可由用户自己编写,或者使用本系统提供的简单策略。接入层提供API无缝接入、TS接入,以及FIX引擎等多种接入方式提供给客户使用,可以更好地满足客户需求。

复杂交易系统支持多种不同的复杂订单,之所以称为复杂订单是因为与普通的订单做区别。就现货市场而言,普通订单分为市价与限价,除目标证券外,限价单仅有价格与数量两个属性,市价单也仅有市价类型与数量两个属性。但是复杂订单不同,复杂订单可能是一笔委托,也可能是一组委托,对一笔委托而言,也包含了两个以上的属性,除数量与价格(对市价单是市价类型)外,还有触发时间、触发价格、高级属性等属性。复杂交易系统支持的最典型的复杂订单,其中又以单条件策略委托最具有代表性,止盈止损单严格来说属于单条件单,而组合委托中的每笔都是单条件单,所以可以将单条件单看作复杂交易系统的基本订单类型。

2.快速订单系统

对于证券订单系统而言,实现高可用性是主要目标之一,常见的高可用性实现模式有以下3类。[17]

A-S(Active-standby)模式是指同一时刻只有一个系统工作,另一待机状态的系统通过心跳检测等方式,关注工作系统的生命状态,在异常情况下,接管其工作。这种镜像模式的基本理论是通过数据的单向复制完成数据从主机到备机的同步,最终达到备机与主机具有相同的数据,达到具备接管工作的条件。

A/2-A/2模式是指同一时刻两个或以上系统均工作,但处理不同的业务指令(可按数据、功能等划分)。在异常情况下,一个系统可以接管另一个系统的工作。这种模式的基本理论是在两台主机间建立双向数据复制,两台主机把数据变化量都复制给对方,最终到达两台主机间的数据一致,从而两台主机都可接管对方的工作。

M-A(Multi- active)冗余模式是指真正意义上的高可用性,同一时刻两个或两个以上的系统处理相同的业务指令,在异常情况下,无切换与接管的概念,可不间断业务服务。这种模式的基本理论是在多台主机上对相同的指令按相同的逻辑进行运算,得到相同的结果,达到这些主机间的数据一致。

A-S模式、A/2-A/2模式是大部分系统采用的高可用模式,M-A冗余模式应用难度比较高。M-A模式的本质就是基于相同的数据与相同的序列,经过相同的逻辑处理可得出相同的结果,即有等式:相同的数据+确定的逻辑+相同的序列=相同的结果

使用多活原理的订单系统架构如图2-1所示。图2-1 使用多活原理的订单系统架构

其中各个部件功能如下。

消息处理单元(MPU,Message Processing Unit),输入系统的交易指令进行排队,输出交易指令序列;对序列化后的交易指令进行持久化存储,形成交易指令日志,确保指令的可追溯性。

业务处理单元(BPU,Business Processing Unit),装载相同的业务数据及加载相同的业务程序,对同一笔交易指令进行并行处理。

消息总线:交易指令序列通过消息总线,有序传送到多个业务处理单元;业务处理单元对交易指令的处理结果通过消息总线传递给消息处理单元。

日志服务单元(LSU,Log Service Unit),完成业务指令的持久化存储,负责系统日志相关功能(如业务重演、日志复制等)。

监控管理单元(MMU,Monitor Management Unit)。消息处理单元、日志服务单元、业务处理单元构成订单系统的最核心部件,而结合实际生产运行维护需求,这种分布式系统的监控与管理有很大的难题与挑战,因此增加监控管理单元。监控管理单元可实时接收各业务处理单元的处理结果,通过比较同一笔业务指令在各业务处理单元节点的处理结果,可实时监控各节点数据是否一致。

3.通信中间件KCXP

金证通信交换平台(KCXP,Kingdom Communication Exchange Platform),是金证公司开发的基于消息队列技术的高可用性、高性能的消息中间件软件。

所谓消息中间件,顾名思义,主要功能是将数据从一个应用分发到另外一个应用。消息中间件主要用来解决跨操作系统和不同的网络环境的应用通信问题。它负责建立网络通信的通道,进行数据的可靠传送、保证数据不丢失、不重发。消息中间件的一大重要作用是能够实现跨平台操作,为处于不同操作系统上的应用软件集成提供数据传送服务。另外,消息中间件适用于进行非实时的数据交换。例如,在复杂交易系统中,KCXP实现的主要功能是进行某些数据的推送,如委托应答、成交回报数据等,委托应答是指订单申报后向COS系统推送的通知消息,告知委托已经申报,成交回报是指订单成交后向COS系统推送成交信息。

4.报盘机STG

证券交易报盘(STG,Securities Trading Gateway),是证券交易系统的重要子系统,是实时交易期间与交易所的唯一通道网关,负责将交易系统的委托指令申报至交易所接口,并从交易所接口回转处理及成交数据。

交易所向券商提供标准化的接口,定义了申报数据的形式、字段等,报盘网关连接证券交易系统与交易所接口,进行接口的转换。在交易报盘时,需要考虑订单的数量,报盘网关不可能一笔一笔向交易所申报,这将大大降低报盘机的处理效率。在这里要使用一种关键的技术“打包”,就是设定两个要素来控制申报的批量启动,这两个要素一个是“时间片”,另一个是收集到足够的申报订单,这里“足够”可以设定为一个阈值,具体要根据一天订单的吞吐量来定。打包处理的优点很明显,如将100个订单打为一个包,吞吐量就可以提高近100倍,但是这种方式也有缺点,就是会略微地增加时延,不论满足两个因素中的哪一个,都意味着先到达的订单不能立即送往交易所。因此时间片不能设置太长,只能是毫秒级别。

5.模拟撮合机KDMatch

世界上证券交易所的撮合机制都比较类似,基本都是按时间优先原则、价格优先原则。成交时时间优先原则是:买卖方向相同时,先申报至交易所的订单优先成交。成交时价格优先的原则是:出价较优者优先成交。买入时,价格较高的订单优先成交,卖出时,价格较低的订单优先成交。原则虽然简单,但是交易所的撮合过程十分复杂,涉及交易账簿的检索、匹配、写入等操作,而对于券商的系统而言,并不需要关心这些复杂的过程,所以在测试阶段,可以使用模拟撮合系统,如KDMatch。

KDMatch是一个简单易用、高效的撮合成交工具,采用多线程处理。KDMatch的撮合速度可以和交易所的撮合成交速度相提并论,甚至还要更快一些,因为KDMatch不用做更多业务逻辑上的判断,可以默认所有提交的订单都由对手方直接成交。KDMatch根据不同的需求可以设置为全部成交、部分成交、不撮合等待撤单、交易所自动撤单等几种方式。

6.内存数据库

传统的数据库管理系统基于磁盘进行管理,需要频繁地访问磁盘[3]来进行数据操作。由于磁盘寻道要进行磁头的机械移动,另外受到系统调用(CPU中断完成,时钟周期的制约)的影响,当操作频繁且复杂时,I/O瓶颈问题日益突出,数据处理的实时性和可扩展性均无法保证。当前内存(RAM)容量越来越大,内存的价格也越来越低,64位操作系统已经支持180亿GB内存的寻址能力,充分利用内存技术提升数据库性能成为普遍趋势。其中,一种主要方法是共享内存技术,在数据库中增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构进行查询和更新处理以最小化磁盘访问但仍然受到I/O操作延迟的影响。另一种是内存数据库(In Memory [4]Database)技术,通过对查询处理、并发控制与恢复的算法和数据结构进行重新设计,更有效地发挥CPU、内存、传输带宽等硬件的性能,通过将数据库装载在内存中以避免事物处理中的I/O操作,可以加快数据处理的速度。在内存数据库中,影响数据库性能的决定因素也由传统关系数据库中的磁盘访问转变为如何降低计算时间,以及内存访问的延迟,确保事物处理的高实时性对内存数据库在体系结构设计等方面提出了新的要求。相比于磁盘由于消除了I/O瓶颈,内存数据库的读写速度要高出几个数量级,但是由于内存的易失性,也带了数据持久化的问题。数据库是证券系统重要的一环,在所有业务处理逻辑中都涉及大量的数据库操作,而内存数据库带来的性能提升是证券系统所不能拒绝的,因此很多券商系统都开始使用内存数据库,但前提是要解决可靠性问题。(1)内存数据库的定义

内存数据库(IMDB,In Memory Database),虽然可以简单地从字面上理解为将数据放在内存中直接操作的数据库,但其在具体定义方面尚未统一,针对什么是内存数据库,目前还存在以下4种不同的说法。

① 整个数据库全部常驻内存,存取数据时没有必要进行I/O操作,这就要求内存足够大,以容纳数据库的所有数据。

② 内存不必足够大到容纳整个数据库,但数据被存取时,先进入内存,数据库的存取在内存中进行。

③ 数据库常驻磁盘,在事务执行前将所需要的数据集调入内存,提交时所有对数据库的修改必须写回磁盘。

④ 数据库常驻磁盘,但内存有很大的缓冲区或高速缓存,因而使数据库的大部分乃至全部可在内存,通过适当的缓冲区的处理以减少内外存I/O操作。

其实,定义内存数据库不必拘泥于数据何时进入及怎样才留驻内存、内存的大小等实现细节,要抓住内存数据库的本质特征—主拷贝或工作版本常驻内存。因此可将内存数据库定义如下:在任意时刻,数据库中活动事务集所操作的数据集合均处于内存中,可以称这样的数据库为内存数据库。(2)内存数据库的特点

内存数据库,作为随着存储技术的发展和现代应用的高性能需求产生和发展起来的数据库技术分支,与传统的磁盘数据库DRDB(Disk Resident Database)存在较大的区别,主要体现在以下几个方面。

① 存取时间。一般认为内存数据库的数据处理速度是传统数据库的10倍以上。

② 存储策略。内存数据库使用大内存策略,内存是易失性的,而在DRDB中,数据常驻磁盘,恢复对象是磁盘内容,恢复工作量和频度也相对较低。

③ 存储组织。DRDB的数据组织常常使用“记录群集技术”,而内存中顺序存取和随机存取同样高效,数据不必积聚存放,从而大大提高空间的利用率。

④ 设计目标。传统数据库其性能目标是少I/O次数高磁盘空间利用率。而内存数据库因为在事务执行过程中不再存在内外存I/O,因此其更注重的是CPU和内存空间的高效利用。(3)内存数据库的应用模式

数据库系统中使用大内存,主要有以下两种途径。

增大传统数据库中的内存缓冲池,以足够容纳近期正在操作的事务所需的全部或大部分数据,从而能够在缓冲池中将一个事务所涉及的数据组织成相应的数据结构来进行查询和更新处理。

摆脱磁盘数据管理的传统方式,在数据缓存、快速算法和并行操作等方面进行改进或重新设计,让数据库的“主版本”或“工作版本”常驻内存,针对数据库的所有事务操作也都在内存中进行,磁盘版本则成为后备。

上述的第一种方式实际上并没有跳出传统磁盘数据库的框架,只是以最小化磁盘访问为目标进行了优化,采用共享内存技术。而第二种方式采用的是内存数据库技术。这种方式近乎把整个数据库放进内存中,相对于传统数据库而言做了根本性的改变。(4)主流内存数据库介绍

目前,内存数据库主要有以下两种架构。

① C/S模式。这和传统的客户端/服务器模式相同,应用程序作为客户端,通过数据库连接组件(如ODBC)来连接数据库服务器。其中,服务器(Server)是一个常驻内存的服务进程,其任务主要集中于保证数据库前端的客户应用程序的全局数据的完整性、控制数据库的并发访问,以及备份与恢复数据库等。而客户应用程序的主要任务则是提供用户与数据库交互的界面、向数据库服务器提交用户请求并接收来自数据库服务器的信息。由于对数据的管理和操作由服务器完成,具有封闭性,对客户端应用程序透明,因此这种架构具有较强的扩展性。而另外一个好处是部署方便,客户端和服务器可以部署在不同的机器上,一个服务器可以同时向多个应用程序提供服务。然而因为客户端和服务器之间一般需要经过网络连接,因此容易受到网络带宽的限制,并对性能造成一定的影响。

② 内嵌式。这种方式是将内存数据库嵌入到靠近应用程序存储区,如应用服务器层,这样应用程序就能更好地访问内存数据库。这种架构的好处是应用程序和内存数据库无缝连接,以提供更佳的响应速度和性能。缺点是由于要嵌入中间层,因此部署和开发要稍微复杂一些。

如今内存数据库已经走向了实际的应用,在许多行业的系统中发挥作用,许多公司如Oracle都推出了自己的商业内存数据库。目前,市场上主流的商业数据库也可以分为以上两类,采用C/S架构的主要[19][20][21]有Oracle的TimesTen(TT),IBM的solidDB和韩国的Altibase[22]等,采用内嵌式的主要有开源的fastDB及MACObject的eXtremeDB等。此外,近年来内存数据库领域也不断涌现出新的技术与产品,下面就介绍一下部分相关的产品与技术。[23]

a.Oracle Cache Fusion(缓存融合)技术。缓存融合是应用于Oracle RAC上的一种技术。RAC,Real Application Clusters,实时应用集群,是Oracle新版本的数据库中应用的一种新技术,是实现高可用性的解决方案,能够保证只要集群中有一个节点存活,就能对外提供服务,是Oracle在网络计算环境中的关键技术。RAC可以实现在低成本服务器集群上构建高可用性数据库系统,并且集成提供了存储管理软件和集群软件,同时有良好的可扩展性,用户可以随时按需扩展系统,以提供更好的性能。

简单来说,Cache Fusion的原理就是将数据库中所有的缓存作为一个共享的数据库缓存库,而且被RAC中所有的节点共享。RAC中每[24]个节点拥有自己的SGA(System Global Area)系统全局区,Cache Fusion通过网络在各个节点的SGA之间进行块传递,而不必使用较为低效的方式:首先将块写回磁盘,再重新从磁盘将块读取到另外一个节点的缓存之中。当一个块被读入一个节点的缓存,这个块会被赋予一个锁,以确保其他节点知道该数据块正在被使用。如果另外一个节点请求该块的一个副本,而这个数据块又处于某个节点的缓存中,那么这个块会通过网络直接传递到另一个节点的SGA中。如果处于缓存中的块已经被修改且尚未写回磁盘,那么可以传递这个块的一个副本。因此,通过这种方式,只要有可能,数据块可以不必写回磁盘即可实现在各个节点缓存之间的移动,从而减少了磁盘I/O,大大提升了数据库的读写速度。从Cache Fusion的机制可以看出,网络的速度十分关键,如果网络传输速度慢于磁盘读写速度,这样的方法将没有任何作用,而事实上,如今的网络速度十分惊人,万兆的网络都很常见。

通过使用缓存融合技术,理论上Oracle RAC的性能可以接近内存数据库,而且是分布式的。但是,在证券系统领域,一般不适用分布式数据库,因为分布式数据库的同步会增加额外的时延,而且还有一致性的问题。对证券系统来说,市场行情瞬息万变,任何时延都是极其宝贵的,一般的选择是使用高性能的单机服务器与集中式数据库。

b.KDB+。国内Level 1数据规模约每天1GB,而Level 2的数据规模大概是Level 1数据的4~20倍。交易中的行情数据可以看作一组与时间序列相关的数据,对于这类海量数据的处理目前有两个方向,一[25]种是利用有丰富统计功能函数的R语言或pandas等专门针对金融类计算设计开发的计算库(Python Data Analysis Library)并利用并行计算、GPU等技术,结合HDF5等数据压缩和读取的性能非常高效的并行分层数据库进行分析;另外一种则认为在海量数据面前,只有线性算法是可行的选择,复杂模型显得得不偿失,在既要满足海量数据分析(高通量)又要适用于高频实时交易(低延迟)的要求下,在语言处理和运行执行中要遵从4S(Small、Simple、Strong、Smart)的原则。

传统的关系型数据库主要面向事务更新优化,采用行存储和磁盘随机分布以加速并发快速写入,但对于查询统计等操作必须对所有相关数据进行扫描,而基于列式存储采用有序化的按列分区存储,数据聚集和列向查询性能极大提升,而且按时间序列组织的数据也可以方便地对数据列进行增删改操作。虽然kdb+/q在交易处理中性能比较突出,但由于函数式语言学习的困难性,目前只在国内少数量化交易机构中有所涉及。

c.eXtremeDB。eXtremeDB是一种嵌入式数据库,是McObject公司为实时系统及嵌入式系统而特别设计的,完全工作在主内存中,不基于文件系统,采用程序直接使用的存取方式,剔除了文件I/O、Buffer和Cache机制,加快了数据保存的速度并提高了数据管理的确定性。eXtremeDB支持事务,支持部分SQL,支持稳定的RAM。与同类产品不同,eXtremeDB不是通过对企业数据库面向实时嵌入式应用进行剪裁而来的,而是总结了30年来McObject公司在编译器、实时编程、数据管理、内核级驱动软件等领域的经验,面向实时嵌入式应用从头开发的最新实时数据管理技术。eXtremeDB能满足对实时数据库在高级数据定义语言、并行访问、基于交易及灵活的索引等多个方面的期待,而且在紧凑的引擎中还提供如事件触发、目标历史等功能。基于eXtremeDB的应用程序运行在只有少量内存和缺少永久存储设备的廉价处理设备上,与企业级数据库相比,这些设备上的数据存储量比较小,事务所持续的时间通常也非常短。此外,需要存储的数据可能是复杂的,实际上它差不多总是动态变化的。其次,这些应用程序即使在速度很慢的处理器上访问数据依然需要保持比较高的速度,简单查询和事务最多不能超过几毫秒。2.3 数据一致性理论

主、备机之间数据复制的常见方法可分为以下3类。(1)基于共享存储的主备复制技术

基于共享存储的主备复制技术通过访问共享存储设备中的订单成交日志文件,来实现主、备机间数据的同步,以及故障下的热备切换。在该方法中,订单在成交日志持久化后才能够发送确认,且在共享存储设备中需要对数据进行冗余备份和事务保护来确保数据的可靠性。因此,该方法在数据同步持久化时会产生极大的延时,导致性能下降,难以大幅改进。同时,该技术在可扩展性方面表现也较差。

该方法的典型应用模式为双机热备,主、备机间通过心跳检测以发现故障,并进行故障隔离与热备切换,保障业务连续运行。(2)虚同步复制技术

虚同步(Virtual Synchrony)是一类分布式的数据复制模型,是在20世纪80年代由康奈尔大学的Kenneth Birman等人提出的。虚同步,顾名思义,并非真正的同步,但是从应用程序的角度来看,数据的变化是同步进行的。虚同步与真正的同步之间两者的区别在于,在真实同步系统中,其动作的执行是严格按照顺序的;在虚同步系统中,可能会为了提高性能而顺序发生变化,但只要保证应用程序“看上去”同步即可。虚同步复制技术在某种程度上有助于防止性能瓶颈的出现。

虚同步复制技术常用于应用程序的数据变化极快的情况,这类程序包括多用户的角色扮演游戏、空中交通管制、证券交易、电信交换等系统。虚同步系统在近二十年间发挥着重要的作用,其曾在纽约证交所、瑞士证交所、法国空管系统、电力和天然气的输送网络管理系统等实际应用中广泛使用。特别需要指出的是,虚同步系统的可靠性很高,纽约证交所的证券交易系统在承受巨大压力的情况下,曾保持十多年的无故障运行,不过随着新技术的出现,以及证券业务和规模的蓬勃发展,该系统在2007年被淘汰使用。

虚同步在分布式存储中发挥着重要作用,但是由于跨IDC(Internet Data Center)的需求,数据同步需要在广域网上进行,会产生较大的延迟,从而产生性能瓶颈。另外,虚同步系统的容错性较差,对于节点崩溃的耐受性较弱,故障恢复和处理过程较为缓慢。(3)基于消息传递的复制状态机技术

复制状态机(RSM,Replicated State Machines)技术被用来解决分布式系统中的一系列容错问题。其基本思想是一个分布式的RSM系统由多个状态机组成,它的状态保存在一组状态变量中。状态机的状态只能通过外部命令来改变。

RSM应用的一个典型场景是:在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么它们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每条指令上执行一个一致性算法以保证每个节点看到的指令一致。这与金证所采用的多活理论依据相同。

RSM的典型实现方式是通过日志复制,其过程如图2-2所示。

在图2-2中,各服务器中的一致性模块(Consensus Module)首先将客户端(Client)发来的请求进行排序,并将它们添加到各自的日志模块(Log)中,随后各个服务器中的状态机模块(State Machine)按照日志中的顺序进行操作,最后将结果返回给客户端。各服务器的一致性模块间通过一致性协议进行交互,确保写入日志模块的请求相同且顺序相同,即便发生宕机情况,也依旧能够按照相同的顺序进行操作恢复,以此保证各服务器节点的一致。图2-2 复制状态机的实现过程

基于消息传递的数据复制方法的复杂性在于能避免网络分区或节点故障而造成节点间数据不一致的情况,将交易数据可靠地复制到各个节点。因此需要一致性协议保证,之前所提到的Paxos算法,以及本研究将要使用的Raft协议都是基于复制状态机技术所提出的容错一致性协议。基于复制状态机技术所设计的系统在容错性、稳定性、可用性,以及可扩展性方面都有较为突出的表现,但是由于是采用消息传递的通信方式,一定的网络延时是不可避免的,因而会导致系统的实时性略显不足。

相较于其他数据复制方法,万兆以太网等高速网络技术在带宽与延迟等方面的不断改善,使得基于消息传递的状态机复制技术在降低系统延迟方面更具潜力。

1.CAP理论[27-29][30]

CAP理论由Eric Brewer在ACM PODC会议上的主题报告中提出,其中字母CAP分别代表以下3个特征。(1)强一致性(Consistency)

强一致性即系统在执行过某项操作后仍然处于一致的状态。在分布式系统中,更新操作执行成功后所有的用户都应该读取到最新的值,这样的系统被认为具有强一致性。(2)可用性(Availability)

可用性即每个操作总是能够在一定的时间内返回结果。一定的时间是指系统的结果必须在给定时间内返回,如果超时则认为不可用。(3)分区容错性(Partition Tolerance)

分区容错性可以理解为系统在存在网络分区的情况下仍然可以接受请求,即满足一致性和可用性;另一种理解为系统对动态加入和离开的处理能力,因为节点的加入和离开可以认为是集群内部的网络分区。

CAP是在分布式环境中设计和部署系统时所要考虑的3个重要的系统需求。根据CAP理论,数据共享系统中这3个条件只能同时满足2个,而无法全部满足,CAP理论示意图如图2-3所示,因此系统设计时必须在这三个特性之间做出权衡。图2-3 CAP理论示意图

根据CAP理论,系统满足三个条件中不同的两个条件会具有不同的特点,见表2-1。表2-1 处理CAP问题的选择

2.BASE理论

对于数据不断增长的系统(如社会计算、网络服务的系统),它们对可用性及分区容错性的要求高于强一致性,并且很难满足事务所[31]要求的ACID特性,因此BASE理论被提出。

BASE方法通过牺牲一致性和孤立性来提高可用性和系统性能,可以认为BASE理论是在CAP理论基础上演变而来的。其中,BASE分别代表以下内容。

① 基本可用(Basically Available):系统能够基本运行、一直提供服务。

② 软状态(Soft-state):系统不要求一直保持强一致状态。

③ 最终一致性(Eventual Consistency):系统需要在某一时刻后达到一致性要求。

事务是用户定义的一个数据库操作序列,这些操作要么全不做,要么全做,是一个不可分割的工作单位(单元),ACID是事务所具有的特性。

① 原子性(Atomicity):事务中的操作要么都做,要么都不做。

② 一致性(Consistency):系统必须始终处在强一致状态下。

③ 隔离性(Isolation):一个事务的执行不能被其他事务所干扰。

④ 持续性(Durability):一个已提交的事务对数据库中数据的改变是永久性的。

保证ACID特性是传统关系型数据库中事务管理的重要任务,也是恢复和并发控制的基本单位。

3.数据一致性模型

分布式系统通过复制数据来提高系统的可用性和可靠性,在不同的机器上维护多个数据副本,由于维护数据副本的一致性代价很高,[32]对性能的损耗较大,因此有多种不同的一致性模型被提出。(1)强一致性

强一致性即严格按照数据访问的先后顺序进行操作,前一步操作完成后,后一步操作就能获得最新的数据。对于单副本数据来说,强一致性容易保证;对于多副本数据,需要使用分布式事务协议来保证。(2)弱一致性

弱一致性即多个用户对于相同数据的更新可同时在不同节点进行,并且不提供任何一致性保证,即有可能存在相同数据的不同版本。在这种一致性下,用户读到某一操作对系统特定数据的更新需要一段时间,这段时间被称为“不一致性窗口”。(3)最终一致性

最终一致性是弱一致性的一种特例,它允许在一定时间段内,数据是不一致的,在最后保证各节点间数据是一致的。[33]

最终一致性模型根据其提供的不同保证又可以划分为更多的模型,如因果一致性、读自写一致性、会话一致性、单调读一致性、单调写一致性等。

4.经典的一致性协议

一致性协议的目的是维护多个副本的一致性,其通过多个副本来进行容错,以此提高系统的可用性。

当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要引入一个称为“协调者”的组件来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点则被称为“参与者”。协调者负责调度参与者的行为,并最终决定这些参与者是否要把事务真正进行提交。基于这个思想,衍生出了几种经典的一致性协议。(1)两阶段提交协议[34]

两阶段提交协议(2PC,Two Phase Commit Protocol)可以保证数据的强一致性,分布式关系型数据管理系统较多采用此协议来完成分布式事务。系统一般包含两类节点:一类为协调者,通常系统中只有一个;另一类为事务参与者,一般包含多个。

两阶段提交协议由两个阶段组成:阶段一,提交事务请求;阶段二,执行事务提交。该协议保证多台服务器上的操作要么全部成功,要么全部失败,其缺陷在于无法处理协调者宕机问题,即单点问题。 (2)三阶段提交协议

三阶段提交协议(3PC,Three Phase Commit Protocol)是在2PC的基础上进行了改进,将两阶段提交协议的“提交事务请求”过程一分为二,形成了由请求、预提交、提交3个阶段组成的事务处理协议。

对比2PC和3PC的优缺点见表2-2。表2-2 2PC和3PC优、缺点对比(3)Paxos算法[35-36]

Paxos算法是Lamport提出的一种基于消息传递且具有高度容错特性的一致性算法。在常见的分布式系统中,总会发生如机器宕机或网络异常等情况。Paxos算法需要解决的问题就是快速且正确地在系统内部对某个值或指令达成一致,并且保证不论发生任何异常,都不会破坏系统的一致性。

Paxos一致性算法将系统节点划分为3类角色,即提议者(Proposer)、批准者(Acceptor)、学习者(Learner)。提议者提出提案,批准者负责批准提案,而学习者主要学习提案。Paxos算法主要由提案选定、提案获取两个部分构成。一致性研究的前提是假设信[37-38]道是可靠的,即非拜占庭问题。

Paxos算法通过选举策略选择一个节点作为主节点,多个节点之间通过操作日志来同步数据。Paxos算法通过维护多个日志副本的一致性来确保系统的高效可用,当主节点发生故障,通过选举某一备节点成为主节点继续提供系统服务,避免单点故障、同步阻塞等问题。[39]

开源分布式系统Hadoop中的Zookeeper为Paxos算法的开源实[40]现算法之一。同时,Google的Chubby分布式锁服务也是采用了Paxos算法的思想。2.4 大规模分布式存储架构设计

相较于国内证券行业,国外证券行业已经有100多年的历史。而美国更是首先将计算机技术、高速网络、海量存储数据库技术应用到证券交易中。与国内证券交易系统主要面对个人投资者不同,国外证券交易系统主要是为大机构提供服务。大机构投资者对于交易系统的速度、品种有着更加严格的要求,而国内证券市场也正在逐步向这一方向发展。

虽然国内外各个厂商根据业务的不同所设计的系统技术架构存在一定的差异,但基本上均采用四层架构模式,即外部接入层、通信层、业务逻辑层、数据持久层,系统结构如图2-4所示。图2-4 证券交易系统四层架构

其中差异最为显著、设计要求最高的应为业务逻辑层,如何设计出具有实时性、灵活性、高可用性等特点的快速交易系统,是各个金融软件厂商所竞争的关键。2012年,恒生电子成功开发了第二代UFT极速交易系统,率先在国内实现了针对证券业务的内存级交易。

国内外证券交易系统的架构设计主要围绕系统的可靠性和高性能两个方面,在可靠性上,更多的是依靠双机热备等方式,然而对于系统的可扩展性方面,并未有显著的突破。随着证券行业竞争日益激烈,各大证券公司除致力于提高交易速度外,对于交易系统的可扩展性、灵活性等也更为重视。目前,在证券交易领域,尚且没有典型的支持大规模分布式存储的证券交易系统架构设计。

由于在证券交易领域尚未有典型的大规模分布式存储架构设计,在此简单介绍几类其他领域的架构设计方案,分析它们的设计特点,为本研究接下来的工作提供相应的指导。2.4.1 Google Spanner

Google Spanner是Google的全球级分布式数据库(Globally-Distributed Database)。Spanner的扩展性达到了全球级,可以扩展到数百个数据中心,数百万台机器,上万亿行记录。更为重要的是,除夸张的可扩展性外,它还能够通过同步复制和多版本控制来满足外部一致性,支持跨数据中心事务。

Google Spanner的整体架构如图2-5所示。

由于Spanner是全球性的,因此它有两个其他分布式存储系统没有的概念。

① Universe:一个Spanner部署实例成为一个Universe,目前全球有3个。Universe支持多数据中心部署,且多个业务可以共享同一个Universe。

② Zones:每个Zone属于一个数据中心,而一个数据中心可能有多个Zone。一般而言,Zone内部网络通信代价较低,而Zone之间通信代价很高。

如图2-5所示,Spanner系统包含如下组件。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载