1 前言 

金融科技是券商行业创新发展的助推剂,国信证券在科技创新和应用的过程中,始终坚持以体验为核心,以数据为驱动,以技术为依托,为需求各异的投资者提供覆盖投融资全环节的智能化、专业化、陪伴式金融服务,同时帮助投资者提升投融资能力。


2 背景

国信证券将科技领先战略视为公司战略的重要组成部分,大力发展金融科技,建立行业领先的科技能力,驱动业务创新,引领公司数字化转型;利用信息技术巩固和加强公司在经纪业务的领先优势,推动业务全方位发展,全力积极探索建立财富业务模式和生态,形成多渠道多终端的产品体系,与用户共同成长。从2007国信证券推出了行业内首个自主研发的手机证券应用金太阳,到2016年重构符合“互联网+”概念的金太阳手机证券系统和服务,在科技创新方面,国信证券一直走在行业前面。

互联网+时代的到来,引流渠道丰富、服务方式便捷、服务时间灵活,整体带动了券商行业非结构化数据爆发式增长。在业务种类的不断丰富、业务体量飞速增长、业务数据类型呈现多样化趋势的同时,数据存留的时间要求越来越长,使得企业需要管理的数据体量越来越大,海量多态非结构化数据的访问效率将直接影响上层业务体验。所以,企业已经需要进入到按照业务数据类型进行精细化的数据存储与管理阶段。但是,这些数据在为企业发展提供强大驱动力的同时,也给数据的管理带来更大的挑战:

  • 互联网业务发展壮大,请求接入越发分散,海量数据同步和就近访问的需求越来越强烈

  • 如何保证数据长久保存、随时可调阅以满足国家法律法规要求

  • 在保证业务稳定运行的同时,进行硬件更新、容量扩展以及故障更换的问题

  • 传统的数据备份无法解决海量文件的逻辑数据备份的问题

  • 文件保留时间很长,文件数量和文件的容量大,带来存储成本问题

因此我们需要一种于海量数据中快速数据获取、具备法规遵从功能、支持数据防篡改、资源扩展灵活简单的存储产品来支撑业务发展和满足行业监管的双重要求,同时兼顾产品运维便捷、数据保护和容灾方案安全可靠和存储资源TCO可控。

3 挑战

按照IDC的预测,到2025年商业数据将达到163ZB,而非结构化数据其中的占比将达到80%。海量的非结构化数据会极大增加企业基础架构的压力,主要包括以下几个方面:

1.如何提高业务的数据访问效率

2.如何实现透明的的资源容量扩展

3.如何实现便捷的节点更新替换

4.海量对象数据流向/访问的可视化

以证券行业的互联网业务为例,通常来说,互联网业务通常会采取多数据中心多活架构,充分保障服务高可用。诸如开户录音、录像数据需要长期保留并拒绝篡改,在数据的保留期内能快速调阅备查等特点,这就要求业务系统的底层存储的架构要灵活,功能要丰富、访问便捷和存储成本低。

因此,当业务系统所遇到的问题已经无法用传统的方案来解决时,我们将目光转向了正在蓬勃发展的对象存储技术。对象存储实质上是大规模的键值存储,能够在单个全局命名空间中存储PB或EB级的数据,并允许使用简单的键(对象名称)来实现海量数据下时间复杂度O的读取效率。写入对象存储的数据采用跨节点纠删码技术(比如Reed-solomon codes)来实现数据保护并降低存储的开销,采用校验和(Checksum)的方式来保证数据的完整性,通过提供跨地域、跨数据中心的数据复制,以进一步提升数据的安全性。对象存储服务接入方式灵活,与操作系统耦合度低,方便为业务系统提供快速接入,在功能方面有能保障业务数据的持久化、完整性及防篡改,非常契合诸如互联网开户等新兴业务数据存储需求。

但是,即便如此,我们依旧秉承着“没有实践就没有发言权”的理念,在项目启动前做了充分的准备工作。例如,在技术调研方面,综合参考了IDC和Gartner等专业报告,优选行业头部公司产品进行技术评估,选取多家行业头部公司进行沟通交流,产出技术对比矩阵;在测试方面,对选型产品的基础功能和企业业务场景契合度进行测试,搭建与实际生产环境一比一的测试环境进行业务场景功能测试;最后,项目组还通过拜访及技术交流等方式对了国内外大型金融同行的经验进行参考借鉴。

经过前期系统化的准备与测试,在2015年我司首次引入了一款采用私有接口协议的对象存储,在本地数据中心和同城数据中心实现了一套集群两个数据中心三个数据副本的的对象存储集群部署,在数据中心内通过专属服务网络和多机柜部署实现故障域隔离,在数据中心间采取异步复制方式实现数据同步。经过4年的业务使用磨合,国信证券基础架构团队在对象存储技术领域积累了丰富的运维管理经验,期间逐步上线了多个系统包括网厅业务、柜台业务、研报、企业网盘、企业制品库等,累计管理近10亿对象数据。

随着对象存储技术在公有云领域多年的发展与成熟,已经成功证明了S3接口的对象存储技术在海量文件的管理领域的能力。同时S3接口在数据注入和数据分析也有着非常良好的生态系统支持,例如Hadoop、ELK等。这使得基于S3接口的对象存储,能够胜任非结构化数据存储平台的任务。而且我们也发现对象存储接口协议逐渐标准化的趋势以及S3做为对象存储标准协议的共识。因此,从远期技术发展要求、产品接口标准化、数据容灾需求、便捷的资源更新替换等角度综合考虑,在2019年引入基于标准S3协议的对象存储,以替换现有的基于私有接口的对象存储。


4 践行

在进行产品选型时结合历史使用经验,针对如下五个维度进行重点考察:金融行业的案例情况、国内的技术支持力量与产品发展历程、S3接口支持情况、对象存储基本功能,对象存储扩容与更新替换。

1.金融行业的案例情况:本次对象存储的建设,主要的目的是搭建一个非结构化数据的存储管理平台,在保证生产数据长久存储随时调阅的同时,还要能够为例如数据分析、互联网访问等多种业务场景提供支撑,因此在进行该项考察时,重点考察供应商是否有类似的项目建设经验。

2.国内技术支持能力与产品发展历程:支持方面重点考察产品的技术支持能力和服务响应效率,包括技术支持人员数量(特别是本地服务人员数量),人员技能匹配度和7*24小时不间断服务能力;产品发展方面重点考察产品成熟度以及产品线在企业的定位,产品迭代周期等细节问题,以保障所选用产品在服务能力方面具备连续性。

3.S3接口支持情况:为了保证平台建设的开放性,在进行方案选型时,重点考察产品的S3接口特性,以保证能够最大程度融入S3生态体系。

4.对象存储基本功能:重点考察对磁盘、节点、网络和站点级故障的容忍能力、数据多版本的支持情况、数据防篡改能力以及多站点的支持情况。

5.对象存储扩容与更新替换:重点考察对象存储节点上下线的影响范围、变更效率、数据平衡自动化程度和变更期间对业务的影响以及不同代次的节点在同一集群的共存可行性。

在经过多方面的考察和测试比较以后,以商业化对象存储产品为基础,搭建基于标准S3协议的非结构化数据存储平台,实现三地三中心的异步复制容灾架构,用于海量非结构化数据增长的长久保存,同时为未来的多活互联网应用的数据调用搭建基础存储平台。从实际效果来看,首先,实现优化了应用的性能,提升了用户体验,能够应对万亿行情下的业务压力;其次,平台化的容灾功能,可快速部署应用生产和灾备,满足业务和监管的双重要求;最后,存储系统维护简单,易管理性比较强。


5 收益

麻雀虽小,五脏俱全,在项目之初的设计目标就是建设一个能够承载多种业务场景的非结构化数据的存储平台,因此设计上充分考虑了业务容灾及分布式业务的数据就近访问需求,在保证国信东莞数据中心、国信深圳数据中心同城容灾的同时,将已上线的重要业务系统的非结构化数据复制至国信上海数据中心实现异地容灾,增强数据可用性,实现数据的就近访问,优化业务体验。

整个方案采取三站点数据复制的架构,在深圳、东莞、上海三地各部署一套对象存储集群,通过产品的复制策略,将数据在三个站点之间进行复制。通过原生数据复制技术,将三个站点的对象存储虚拟成一个跨地域的对象存储池,应用在任意站点均可进行数据读写。异地复制可针对站点故障提供增强保护,具体方法是拥有数据的多个拷贝,即数据的主拷贝处于原始站点上,数据的辅助拷贝处于远程站点上。其他站点上的数据的主拷贝和复制拷贝会通过擦除编码进行保护。这意味着每个拷贝都可防范本地故障(如磁盘或节点故障),恢复时不会生成 WAN 流量。复制由对象所有者在区块级别进行,整个过程完全异步。每个站点负责本地数据保护。复制的数据首先进行加密(AES256),然后通过 HTTP 发送到其他站点。

结合多年对象存储使用经验,为了更好的进行业务的访问请求管理,做了如下特殊的设计和优化:

1.独立万兆IP存储网络:在每个数据中心建设全万兆的独立的IP存储网络。

2.独立Nginx集群:对象存储采用横向扩展架构,所有节点均可单独对外提供存储服务,应用程序可以通过不同的节点对同一个数据进行访问。为每个上线的业务系统单独配置一个的Nginx集群,通过负载均衡来聚合多节点的吞吐带宽,充分发挥横向扩展架构的集群优势实现生产网络的请求转发和对象存储节点访问的负载均衡。通过应用专属的Nginx集群接入请求,可以实现应用间请求的故障域隔离,既能有效的掌握具体某个业务的请求情况,又能减少故障串扰,加速定位问题。

3.在对象存储的替换过程中,难免会涉及到数据从私有接口的对象存储迁移至S3接口对象存储的问题。数据的迁移的主要难点在于大量的非结构化数据(数亿+)迁移的过程中数据的一致性保障、应用访问方式影响程度、应用代码修改量。由于数据量巨大,无法进行停机迁移,而且迁移过程中,业务系统需要对历史数据进行读写操作。为了解决应用不停机的数据迁移问题,我们在这次项目里自主研发了数据迁移网关,可以在不影响业务的情况下,既自动识别非结构数据的存储位置提供对外访问,又能通过独立线程在后台进行数据迁移,可以保证在迁移的过程中,数据仍可以正常读写,业务系统零感知。

4.应用的访问最佳实践:任何技术都有自己适用的使用场景,对象存储也不例外。因此在引入对象存储这个新技术的时候,需要与相关业务部门进行充分的沟通,使其对对象存储有合理的期待,不要因为市场上对对象存储技术的宣传,而把对象存储当成万能药。在这次项目的建设过程中,我们结合国信相关业务的使用场景以及业务特点对通用性内容总结后编写了《国信证券对象存储使用指南》,通过规范先行,引导业务开发同时规范合理的使用对象存储。

5.赋能新业务:与传统存储不同,在某些方面,对象存储可以作为应用系统或就绪服务来看待。在使用对象存储时,前期与业务部门需要进行深度沟通以便很好的了解业务特点,沟通中也可以让业务开发团队更好的了解对象存储的特性,从而更好的优化业务数据持久化流程,尤其是互联网相关的业务。

6.日常运维监控:在整个架构设计上,对象存储会直接与业务系统通过API进行对接,这使得业务的数据访问特点会直接反映到对象存储层面,也就意味着在对象存储层面可以直接感知业务数据访问的各种特点以及变化情况。目前我司通过Zabbix对对象存储的28个技术指标的监控,实现对象存储系统的总体运行管理;同时,部署了基于容器的ELK+Grafana进行对象存储承载的应用的使用情况进行监控和展示(21个视图),例如应用级别的容量使用分布、应用级别的请求时延、应用的请求分布等监控。

国信证券基于对象存储技术的海量非结构化数据管理实践分享_java

国信证券基于对象存储技术的海量非结构化数据管理实践分享_java_02


6 思考

2015年对象存储的引入不是对SAN或NAS的替换,而是运维管理进入到精细化领域后的存储服务能力的补充,在此期间主要有以下两个问题困扰着我们运维人员

用户习惯的改变。很多开发和应用运维用户习惯于传统文件形式存储,直观性较强,而对于对象来说,更多的用户是不清楚到底什么对象,因此在前期我们花费了较多的时间在内部技术扫盲、用户场景培育和使用标准制定,多维度努力以降低用户上手成本,打消业务上线对象存储的疑虑。

非结构化数据的备份。受限于传统备份软件仅可以利用对象存储来存储备份数据,而无法将其作为数据源备份所承载的数据。因此基于现状并充分考虑对象存储数据特性可以参考如下方式对对象存储数据提高可用性保障:

首先可以采用多地域多副本方式、站点内部跨节点纠删码技术和数据校验和技术提高数据的可用性;

其次可以通过启用对象存储的多版本功能应对基本的逻辑故障;

最后,可以基于业务特点进行基于bucket的权限限制,避免误删除。

同时,还应该充分与前端应用保持密切沟通,增强前端应用数据写入的事务性或支持延迟提交等。


7 结束语

目前整个平台已经正式上线平稳运行超过1年,承载十余个业务系统,年度总请求4.5亿次。随着企业内部的宣讲和使用推广,越来越多的符合对象存储特性要求的业务系统通过测试申请确认、接口联调、可用性测试后完成生产环境上线运行。

通过对象存储的使用深入,用户已经充分认识到了对象存储的好处。我们也在持续的对当前平台运行监管控方式、方法和业务系统使用过程中发现的问题进行总结,不断优化以保障整个平台的运行稳定、可靠。相信未来整个对象存储平台能够为公司金融科技实力的提升提供更大的助力。