搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > FinTech技术创新 > 金融OLTP场景下分布式数据库研究与设计

金融OLTP场景下分布式数据库研究与设计

FinTech技术创新 2018-06-28



今天先由温卫斌“博主”为大家带来“金融OLTP场景下分布式数据库研究与设计”的技术分享



金融OLTP场景下分布式数据库研究与设计 


随着互联网金融时代的到来,金融IT系统的数据量呈指数级飞速上涨,一方面需要面向海量客户、快速响应客户需求、提供全面的金融产品和服务,另一方面在利率市场化、金融脱媒和互联网金融的冲击下,金融公司亟需降低IT成本以提高市场竞争力。


在此背景下,传统集中式关系数据库水平扩展瓶颈愈发凸显,逐渐暴露了其成本高昂、性能低、扩展性差、议价能力低甚至国家安全等方面的问题。例如1台PC server版的Oracle,一般建议连接数不超过1000,MySQL单表数据量不超过1000w,这意味着在应用服务器集群多则上百台的互联网金融场景下,每台应用服务器在数据库连接池中的最大连接数不能超过10,这使得传统单机数据库已经超负荷运转,而数据库无论是垂直扩展还是水平扩展都是“心有余力不足”,垂直扩展受限于机房、机架、采购、成本等因素,到达一定程度则无法进行扩展;而水平扩展由于底层数据引擎本质上是集中式的,从设计上就并不具备横向扩展能力。


因此,从商业银行企业战略出发,互联网获客带来的海量客户、账户增长,要求系统数据架构需具备弹性的水平扩展能力,数据要进行分布式部署,这都需要有分布式数据库服务支持。


分布式数据库方案选择


目前在分布式数据库领域,主要分为关系数据库+分库分表中间件、NoSQL数据库、NewSQL数据库三类方案:


⁜ 关系数据库+分库分表中间件:目前大部分互联网公司采用的方案,通过对数据进行垂直拆分或者水平拆分,然后通过分库分表中间件完成分布式数据访问、事务、扩容等操作。


⁜ NoSQL数据库:由于不支持SQL,且对事务(ACID)支持有限,在金融场景中多用于OLAP(联机分析处理),存储日志等非核心业务交易数据。


⁜ NewSQL数据库:支持SQL与分布式事务,同时提供了NoSQL相同的分布式、高容错、海量数据库存储与扩展能力,是目前分布式数据库的最新发展趋势,知名的有Google Spanner、Clustrix、CockroachDB、TiDB、OceanBase等,但这类数据库目前仍处于发展初期,尚无大规模使用案例,特别是在金融领域,另外这些数据库由于刚上市、技术复杂度较高,在国内还尚未有专业的团队进行售后技术支持,专业DBA人员缺失,贸然使用风险太大。


在金融场景下,优先考虑的是数据库的成熟程度、稳定性、生态完备性、数据迁移难度、已有系统兼容性、自主可控等方面。基于此我们还是选择了第一种方案(关系数据库+分库分表中间件):


基于传统关系数据库和廉价X86服务器构建数据层架构,通过自主研发的中间件实现读写分离、分库分表、负载均衡、事务管理、数据迁移、运维监控等功能,最大程度屏蔽数据拆分后对应用的影响,应用如同单库般方便透明地访问分布式存储的业务数据。


这样的方案选择具备如下优势:一是采用传统关系数据库,数据复制、灾备、高可用均可基于目前数据库厂商成熟方案,DBA人才丰富,技术储备充足;二是自主研发中间件,复杂度较低、技术可控,实施难度低,对前端应用影响少;三是软硬件及时间成本小,支持云部署,能够突破传统单机数据库的容量和能力极限,从而实现数据库的无限扩容、弹性扩展。


分库分表中间件


分库分表带来的最大问题就是数据的访问,包括SQL路由、结果集合并、聚合处理、读写分离、事务、扩容等,这些如果不修改数据库底层代码,就需要一个特定的中间件来实现。


从系统的程序架构层面来看,可以在DAO层、Spring数据访问封装层、ORM层、JDBC API层、数据库代理服务器五个层面上实现,不同层实现框架各有优劣势,层次结构示意图如下:


金融OLTP场景下分布式数据库研究与设计

图1 分库分表中间件实现层次图


考虑到我们要构建统一的分布式数据服务平台,需要支持不同开发语言、多种数据库,并且对应用的侵入性要低,因此选择在数据库代理层实现中间件功能。


具体的数据分库分表拆分方案、分库分表中间件选择,以及后续数据扩容的方案及步骤,请登录温文斌的confluence个人空间详细参看吧。



好了,今天就先分享到这里,下次我们再见~



想看更多绝对干货和有趣新闻的请点赞并分享

                👇👇👇

一起评论探讨互动嘛

👇👇

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《金融OLTP场景下分布式数据库研究与设计》的版权归原作者「FinTech技术创新」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注FinTech技术创新微信公众号

FinTech技术创新微信公众号:gh_9b336daff4dd

FinTech技术创新

手机扫描上方二维码即可关注FinTech技术创新微信公众号

FinTech技术创新最新文章

精品公众号随机推荐