推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 金融电子化 > 案例丨金融级数据库新一代架构实践

案例丨金融级数据库新一代架构实践

金融电子化 2018-10-18


文 / 巨杉数据库 王涛


分布式数据库技术发展多年,但是在应用、业务的驱动下,分布式数据库的架构一直在不断发展和演进。在新的业务需求下,金融行业对于数据库的架构也提出了新的挑战,究竟何种数据库架构能够满足这些新的需求?本文就将以金融行业认可的分布式数据库作为案例,详细探讨金融级数据库的新一代架构实践。

 

银行业新一代数据架构转型需求

应用和业务层的压力,给商业银行IT和数据架构带来了新需求和挑战,分布式技术架构转型的需求也就应运而生。商业银行亟需分布式架构转型,主要体现在如下几个方面:


●提升海量数据系统管理弹性。当商业银行系统内数据量急剧增大时,系统需要弹性地扩容以应对PB级别以上的数据管理,这种弹性容量调整可以实现让所有数据保持在线。


●提升数据系统管理性能。针对客户的实时需求,商业银行数据系统需要满足高并发业务操作需求,实现海量数据超高性能读写以及实时访问查询。


●升级数据安全保障。数据安全不仅仅是简单的备份,除了实现数据的持续高可用外,还应支持异地容灾甚至数据中心“双活”,进而保障数据安全。


●满足多类型数据处理需求,提升系统效率。在跨业务的融合中,亟需实现对多模数据的统一管理,从结构化数据到半结构化数据再到非结构化数据,进而实现不同类型的数据统一融合管理,从而大大提升系统效率。


●简化开发运维节约成本。随着应用的增多,更需要分布式架构支持,进行数据分区管理,实现业务有效隔离。同时,保持系统的弹性、兼容性,大大简化运维开发。


●有能力支撑核心业务系统的国产产品。除了数据安全的要求和“技术先进”,对于核心业务,更重要的是对产品代码级具有控制力,这样可以保证产品针对用户共性需求不断进行迭代更新,也带来产品稳定性以及高效强力的技术支持。

 

 

开源金融级分布式数据库SequoiaDB,经过6年的研发,坚持从零开始打造数据库核心引擎。在技术探索中,选择了更适合云数据库场景的架构和引擎设计。本文也将详细展开,介绍目前SequoiaDB的架构与设计理念。

 

SequoiaDB近日也完成由嘉实投资领投的C轮融资。本轮的领投方为嘉实投资,启明创投与DCM作为早期投资方跟投。SequoiaDB巨杉数据库一直坚持技术驱动产品,专注打造金融级分布式数据库,成为中国首次入选Gartner数据库报告的数据库厂商。目前,巨杉数据库付费企业级客户与社区用户总数超过1000家,并已在超过50家500强级别的银行、保险、证券等大型金融机构核心生产业务上线。

 

Multimodel多模数据库引擎

在云计算与分布式时代,为单一结构化数据服务的传统关系型数据库也开始了不断地发展。从2007年IBM DB2支持XML以来,越来越多的关系型数据库开始支持XML与JSON等半结构化数据。因此,Gartner认为未来数据库的发展方向是多模式的时代,一款成熟的数据库产品需要利用分布式技术,支持除了关系型以外的多种访问方式。


SequoiaDB则是一款典型的多模(Multi-Model)数据库,全面覆盖了结构化、半结构化与非结构化数据,同时满足交易、影像存储业务、以及统计分析业务的需求。


SequoiaDB通过其计算存储分离架构,在NewSQL结构化数据领域有效利用MySQL、SparkSQL与PGSQL解析执行器,在保持行业标准100%兼容的同时,完美实现了在线交易与离线分析的HTAP混合交易分析负载的支撑。同时SequoiaDB使用API满足企业对半结构化JSON数据的支持,以及通过兼容Posix文件系统以及S3接口实现了非结构化数据的存储与访问。


SequoiaDB存储使用双引擎架构,将文件大对象与数据记录分别以最优的结构进行解析与存放,上层辅以统一的事务管理、集群管控、同步复制、会话管理等机制,支持数据与会话的逻辑与物理隔离,使其最大化满足云时代的分布式管理与混合业务负载需求。


2017年底SequoiaDB发布了其3.0版本。在其发展路径中可以看到,SequoiaDB的每一个大版本迭代均在之前的版本上进行了巨大的扩展与增强。其中,2013年正式发布的1.0版本作为单纯的JSON数据库,提供了对半结构化数据的支撑能力。而到了2015年的2.0版本,SequoiaDB开始完全支持了对象存储。直到2017年底发布的3.0版本更是提供了对MySQL、PGSQL与SparkSQL的完美对接与100%兼容,全面支持NewSQL的分布式事务处理能力。


案例丨金融级数据库新一代架构实践

SequoiaDB产品 发展历程


计算-存储分离架构

当前业界中常见的分布式架构包括分库分表与计算存储分离两类。其中分库分表架构以应用中间件切分或MyCat等产品为代表。而如果说分库分表架构是基于传统数据库进行简单的上层封装,真正的计算存储分离架构则意味着在SQL解析与底层的数据存储均可进行自由的弹性扩展。


当前行业中最主流的云数据库实现(例如AWS的Aurora、阿里云的PolarDB等)即通过将MySQL服务器直接构建在底层的分布式高性能存储之上,通过定制化标准的SQL引擎与底层数据通讯接口,实现底层分布式存储与上层的SQL解析执行器完全松耦合,两者均可自由动态伸缩。


案例丨金融级数据库新一代架构实践

计算(SQL)-存储 分离架构示意

 

计算存储分离体系的设计思想是以松耦合的方式将计算与存储层分别部署,通过标准接口或插件对各个模块和组件进行无缝替换,在计算层与存储层均可实现自由的弹性伸缩。MySQL与MariaDB的架构可以说关系型数据库计算存储松耦合结构的代表。在MySQL5.7及之前的版本中,其SQL解析引擎与后台的数据存储内核通过几百个C++函数进行通讯。因此,在MySQL数据库中,DBA可以选择InnoDB、MyISAM、NDB、Memory、甚至自己实现一套数据库引擎来与前端的SQL解析执行器进行对接。

 

案例丨金融级数据库新一代架构实践

分布式数据库“计算-存储分离”架构详细示意

 

计算存储分离架构的优势之一在于,用户可以根据自身的业务特征自由选择面向交易的SQL解析器(例如MySQL或PGSQL),或面向统计分析的执行引擎(例如SparkSQL)。众所周知,使用不同的SQL优化与执行方式,数据库的访问性能可能会存在上千上万倍的差距。计算存储分离的核心思想便是在数据存储层面进行一体化存储,而计算层面则有效利用每种执行引擎的特点,针对不同的业务场景进行选择和优化。

 

案例丨金融级数据库新一代架构实践

SequoiaDB 架构示意

 

同时,由于数据存储层与计算层完全分离,用户完全可以在存储层进行逻辑与物理的隔离,将面向高频交易的前端业务,与面向高吞吐量的统计分析使用不同的硬件进行存储,确保在多类型数据访问时互不干扰,以真正达到生产环境可用的多租户与HTAP能力。

 

得益于SequoiaDB 3.0的分离架构,整个数据库可以通过自由对接不同的执行引擎,对同一份数据以不同的接口进行访问。同时,SequoiaDB可以通过配置,指定在线业务访问三副本中的两份,而另一份则专门供SparkSQL进行统计分析,从而做到对同一份数据的访问,在线应用与统计业务在物理硬件层面完全隔离。


案例丨金融级数据库新一代架构实践

计算-存储分离架构下的业务灵活隔离划分

 

对于在线交易业务来说,由于所有的分布式事务、锁、索引等机制都是直接在底层的分布式引擎完成,上层使用任何SQL解析器都可以做到完全的ACID。


弹性伸缩

在云计算的时代,任何应用程序与中间件早已经通过微服务架构实现了动态扩容缩容。例如,企业可以在双十一高峰前大规模租赁AWS或阿里云的服务器,将应用程序的计算与处理能力几十倍地扩张。


但是,不同于应用程序,数据层面的弹性伸缩能力往往是应用程序扩展性最大的制约。例如,应用程序可以在一天内不停机地从3个Tomcat服务器扩展到30个,但底层的数据分库分表机制几乎不可能轻松自如地增减数据库的服务节点。


案例丨金融级数据库新一代架构实践

SequoiaDB存储引擎原生分布式架构

 

SequoiaDB通过一致性散列等机制,对底层数据库扩容缩容做到完全在线且对应用透明无感知。对于需要存放大量数据的流水类业务,SequoiaDB甚至能够提供“零数据迁移”策略,确保增加节点后系统不会产生任何需要产生大量I/O的后台重平衡操作。


SequoiaDB可以通过增加数据分区与数据节点数量,对整个集群的存储容量与计算能力进行弹性水平横向扩张。


MySQL全兼容

SequoiaDB通过“计算-存储分离”架构,提供了应用程序层面的MySQL全兼容能力。SequoiaDB直接利用在MySQL官网下载的MySQL Server,通过其存储引擎插件的能力,提供了平行于InnoDB的SequoiaDB分布式存储引擎插件。


SequoiaDB完全利用了大家多年来所习惯使用的MySQL数据库服务,对于应用程序开发人员与DBA来说并不需要学习任何新的知识与语法,便可以无缝地将其应用程序从传统的单点架构迁移到分布式数据库。在从InnoDB存储引擎向SequoiaDB分布式引擎切换时,所有的数据分区机制对上层应用程序完全透明零感知。同时SequoiaDB也提供了包括离线、在线、实时等多种迁移工具,供用户在不同场景下进行选择。


如今MySQL已经被大量互联网与企业级用户所使用。相比起需要重新构建SQL解析器与执行器的分库分表策略,SequoiaDB的计算-存储分离架构能够最大化重用开发人员与DBA的原有技能,同时与MySQL社区保持紧密结合互动,通过其分布式存储能力参与到MySQL的生态建设。

 

多活与容灾

对于金融业,“两地三中心”和容灾、多活等是对数据库必须的需求。在同城灾备的基础上,在异地机房单独部署一套SequoiaDB集群作为异地灾备集群。异地集群只保持单副本,两地间结构化数据的同步通过传输同城灾备集群日志到异地灾备集群,然后通过重放日志记录的方式实现结构化数据的同步。

 

异地容灾部署架构图

 

根据SequoiaDB巨杉数据库在某银行用户的容灾架构部署,每个数据组都有两个节点落在主机房中,另外一个节点落在灾备机房中。在数据同步方面,使用了SequoiaDB提供的节点强一致性的功能,当数据写入主节点时,数据库会确保节点间的数据都同步完成后才返回,这样即使在主机房发生整体灾难时也能有效得保证数据的完整性与安全性。由于当主机房整体出现故障时,可以使用SequoiaDB数据库提供的分裂功能在数分钟内快速地把灾备机房中的单一副本分裂成独立的集群为业务提供服务,因此RTO几乎接近零。由于SequoiaDB开启了节点数据强一致性的功能,因此RPO也几乎接近零。

 

小结

以Multimodel多模数据存储引擎为基础,通过业界主流的计算-存储分离架构,实现引擎的分布式以及SQL层对于MySQL、PostgreSQL以及SparkSQL的完整兼容。这一整体架构设计相信是云数据发展的主流架构设计。

 

SequoiaDB正是应用了这一架构设计,实现了弹性扩张、多租户、HTAP支持、与MySQL全兼容等能力,这也使开源的SequoiaDB能够更加紧密地参与到社区建设中,为我国的数据库基础软件发展与MySQL社区的壮大贡献自己的力量!通过此次融资,巨杉数据库将持续投入核心研发与技术创新,立足于金融行业覆盖其他垂直领域市场,拓展更多企业级应用场景,加速国际化步伐,将巨杉数据库打造成为世界级的分布式数据库产品!



《金融电子化》新媒体部:主任 / 邝源  编辑 / 潘婧

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《案例丨金融级数据库新一代架构实践》的版权归原作者「金融电子化」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注金融电子化微信公众号

金融电子化微信公众号:fcmag1993

金融电子化

手机扫描上方二维码即可关注金融电子化微信公众号

金融电子化最新文章

精品公众号随机推荐