分布式数据库在光大银行关键业务系统的应用探索

做者介绍:王志刚,光大银行数据库运维主管。

你们好,我是来自中国光大银行信息科技部的王志刚,很是高兴有机会给你们分享一些分布式数据库在光大银行的应用探索。我目前在光大银行银行信息科技部负责数据库管理团队,在加入光大银行以前在三星、索尼爱立信,还有 Oracle 工做过,一直在负责数据库相关的工做。在近十年我和个人团队一直负责光大银行总行的数据库运维,这里面既包括咱们的交易型数据库,也包括 MPP,还有 Hadoop 这样的大数据运维。在运维的过程当中,咱们一直也在思考如今的数据库有哪些问题、面临哪些风险、数据库技术的发展趋势是什么,这一点是很重要的,由于它决定了咱们为何要转向分布式,咱们但愿分布式能替咱们解决哪些问题,它可以解决哪些问题和它不可以解决哪些问题。数据库

咱们如今运维的数据库包括商业数据库,像 Oracle、SQL Server、DB2;也有开源数据库,像关系型的 MySQL、NoSQL 数据库、Redis(KV 型),还有大数据、MPP,和分布式数据库等等。安全

目前运维的数据库面临哪些挑战?

以咱们的观点去看如今银行数据库面临哪些挑战呢?咱们认为有下面几点。服务器

1. 处理能力受限

不少人都认为咱们如今处理能力受限,可是数据库能力受限到底瓶颈在哪里?在咱们看来在高的业务压力下瓶颈主要有两点:架构

一是集中式存储资源的压力。咱们能够用最高端的存储,用最好的设备,但他终究是一个单点,他的性能受总体的限制;并发

二是热点资源。其实咱们作数据库的时候更会发现相较于硬件的限制,软件的限制可能更大,像咱们常常遇到的锁冲突的问题可能仍是比较表层的问题,其实更多的是在数据库软件给你提供 ACID 和各类 SQL 接口的时候,他自己不是没有代价的,而是有成本的,这些成本自己会形成热点的内存、热点的序列、热点的内部闩锁等冲突,这些冲突在高压力下会对咱们的性能形成极大的影响。框架

2. 部署集中会致使风险的集中

咱们能够用最高端的设备,能够用最好的软件集群,咱们能够将故障率下降到很是很是的低,也可让切换时间变得很是短,变成秒级,让他能够在几秒的时间切换完,可是他仍旧避免不了一点,就是在咱们的数据库是集中式的时候,一旦出现问题,在这几秒以内咱们全部的交易都会中止。这实际上是咱们想提高的一个方面,咱们但愿有一个可以 24 小时不间断运行的数据库。运维

3. 跨数据库中心多活部署

银行是两地三中心的结构,它的投入很大,咱们但愿每一个中心都利用起来,可以利用咱们运维中数据中心的资源尽可能的对外提供业务服务,这也是咱们但愿可以经过分布式的方案去解决的。由于在传统的架构下,咱们只能用最高端的设备,好比双活的存储、双活的软件,但这在更多的状况下提供的是更高的可用性,并不能保证咱们在全部的数据中心同时对外服务。分布式

4. 数据库产品多样化

面对内外部多变形势,抵御产品供应链风险,我认为供应链的问题一直存在,在这咱们必需要感谢大洋彼岸的大统领,由于他让咱们知道这个问题如今有多么的紧迫,由于咱们是 China,咱们可能要跟大统领说一下“感谢,让咱们意识到这个问题”。它决定了咱们为何要转向分布式数据库,咱们但愿分布式数据库或者说分布式架构替咱们解决什么样的问题,由于这是一个比较复杂的应用场景,当咱们在整个应用场景遇到一些问题的时候,当咱们面临一些抉择的时候,甚至是遇到一些困难的时候,它可让咱们回到问题的本原,回到咱们的初心,让咱们想一想咱们当时要解决什么问题,咱们要选择什么样的技术去解决这个问题。oop

银行须要什么样的数据库?

咱们总结了一下银行到底须要什么样的数据库。性能

首先数据库是科技重器。

你们回想一下银行的本原,银行是经营什么的?有人说银行是经营钱的,我以为不许确,印钞厂是经营钱的,银行的使命实际上是财富的流转。之前的票号说汇通天下,意思是让财富在空间之间流转,如今你们贷款买房,银行给你贷款,过几十年你把他还清,在几十年以后你去住这个房子,这是银行让财富在时间上流转,其实银行的使命是让财富在时空之中流转,在流转的过程当中为何你相信银行能承担这个使命呢?是由于银行有一个经营的核心,这个核心是信用,只有有信用的银行你才愿意把钱存给它,这个信用不只仅是你的钱要一分不差的给你,同时还要准时的给你。若是你取存款的时候银行跟你说:“你一个月以后再来吧,对不起如今没有钱。”你还会存给他吗?不会。银行经营的核心决定了咱们后台支撑银行的整个系统,不只仅是数据库,都要有准确极致的要求,既要时间准确,又要数字准确。

第二是银行业务发展自己的须要。

互联网金融某信、某宝的发展倒逼银行信息系统不断提高,既要提高交易的性能,也要提高咱们批处理的性能,由于银行整个金融系统是互相链接的,你要这样作,别人也要这样作,咱们要连成一个总体的金融网。

第三是监管的要求。

这一点多是银行发展和互联网金融发展比较大的一个区别,在这里我跟你们分享一下,在过去两年双十一大促的时候,光大银行一直在双十一网联的统计中成功率排名第一,其实准确的说网联考核的不只是成功率,成功率是 99.9%,能够说很好,可是不够,网联还要考核成功的绝对数量。去年双十一大促的时候,光大银行在全国银行中排名第一,是由于光大银行在整个双十一促销过程当中只有三笔交易超时,因此整个系统对咱们的要求是至关苛刻的。咱们在整个环境中,不只在量大以后只能有很低的失败比例,并且几乎要求你每笔交易都不能错。另外监管要求,若是有几笔交易错了必定要找出缘由,他对咱们的运维管理和对咱们的问题分析有极高的要求,这多是在实际应用场景中和现有的互联网金融的一个区别。

第四是银行也一样面临成本压力。

常常有人跟咱们说银行很好,有钱,你买买买就能够了,银行是有钱,可是没有一分钱是能够随便花的,因此买买买只存在于段子中,现实是每一分钱都要精打细算,咱们但愿把钱投入到一个真正有收益的地方,银行须要的就是这样的数据库,这样的科技产品。

关于分布式数据库,咱们的思考

基于上面这些思考,咱们转向分布式数据库,咱们但愿分布式数据库能解决咱们的难题,同时符合银行对数据库的要求。关于分布式数据库咱们的思考大概有如下几种说法,有的咱们赞成,有的咱们不太赞成,在这里我跟你们分享一下。

第一点是说中国的分布式数据库技术是世界第一梯队,这点咱们认同。

由于中国的分布式数据库技术得益于中国有世界上最大的互联网应用,就像你要作一个好的厨子,必定要有好的食客同样,咱们有了好的食客,咱们就有了成为好厨子的潜质。

第二点是当前(2020 年)分布式数据库产品已经成熟了吗?

通过咱们的调研对比测试,咱们以为这个答案是 No。分布式数据库产品的彻底成熟,固然也不排除后面会出现技术爆炸、飞跃,咱们认为还须要五年以上的时间。你们能够回想一下这个路程,咱们举一个国外产品的例子,如今国外最大的一个数据库厂商 70 年代末成立,进入中国是 80 年代末,真正在中国铺开是 90 年代末,经历了 20 年的时间。咱们如今虽然有了各类技术的飞跃,可是有些时间跨度仍是不可避免的,因此对于第二个问题的答案咱们认为是 No。紧接着是第三个问题,咱们要继续等待五年以后吗?对不起,咱们的答案也是 No,其实不光是数据库,对全部产品的成熟,咱们认为有三种因素:

  • 第一产品自身;
  • 第二是应用开发的成熟,产品自身好仍是很差是他自身的能力,但你须要知道怎么用他;
  • 第三是运维管理,就是你会不会管理他,会不会维护他。

就像一辆车同样,把车作的很好这是产品自身的问题,那咱们会不会开,你会开了以后有没有人会修。当全部这三个条件都成熟的时候,一个产品和他的环境才成熟,咱们无法等待一个产品,先把车造好了,咱们再去学怎么开,而后咱们再去学怎么修,这三个条件必定是同步的。

因此正是基于这个判断,光大银行在作分布式数据库这个项目的时候定了一个原则,叫躬身入局,咱们要参与其中,经过咱们的应用开发、测试、运维、实践与产品、技术和生态共同成长。生态也很重要,你们想一想原来的厂商在中国的推广是仅靠厂商自己吗?我以为不只仅是,咱们要感谢像 ITPUB 这样的互联网社区, 是这些社区让咱们一块儿成熟起来,包括在同业之间的分享和促进。

光大银行分布式数据库实践

咱们比较早认知到分布式数据库和整个分布式架构转型对银行科技工做的重要做用。从光大银行信息科技部整个部门来讲,把分布式数据库的建设工做列为了部门的年度重点工做之一,从 2018 年就开始研究,到 2019 年咱们连续同业调研、技术测试、选型论证以及试点的上线,今年咱们的计划是进一步推广使用的范围。由于我是分布式数据库建设的项目经理,咱们之前也常常引入一些新产品,那这个项目和之前咱们作的其余项目有什么不一样呢?仍是回到问题的本原,回到咱们的初心,咱们一开始要拿分布式数据库解决什么问题。咱们但愿它解决的是三个问题:

  • 第一是性能的问题;
  • 第二是可用性的问题;
  • 第三是多活的问题。

银行有不少系统,小的有几百个,大的有几千个,这些系统中有大量的边缘系统,在之前这些边缘系统能够给咱们新技术的测试提供很好的场景,可是在分布式数据库这个项目中,这个场景不太适用,由于咱们对边缘系统的可用性的容忍度很高,一个边缘系统没有咱们以前说的那几个问题,他无法验证咱们的处理能力、稳定性、可用性,无法帮助咱们去锻造开发测试和运维团队的技术能力。并且咱们知道分布式数据库是比较复杂的,在这种系统中引入分布式数据库的时候,相对来讲投入的设备量也比较大,而且他没有真正解决技术问题,也没有真正创造技术价值,因此正是基于这些考虑,咱们首先要把分布式数据库应用到真正须要的系统。因此有人跟我开玩笑说,咱们之前作项目都是 Normal 模式,但这个项目一上来就是 Hard 模式

光大银行有两个受客面最大的系统,也就是对客的系统,一个是理财,一个是缴费,偏偏是这两个系统,咱们把他拿来作分布式数据库的引入的试点,能够说是“到中流击水”,咱们就要作到“第一战即攻坚战”。

1. 新一代财富管理平台

光大银行是一个有理财基因的银行,2004 年光大银行在国内发行了第一款人民币理财产品,因此 2004 年也被称为中国的理财元年,2018 年光大集团的董事长李晓鹏提出了打造一流财富管理银行的愿景, 2019 年光大银行成为了首批获批成立理财子公司的股份制商业银行,到了同年的 9 月,光大银行理财公司正式开业,成为了首家开业的股份制商业银行的理财公司。

新一代财富管理平台是支撑咱们整个光大银行理财公司运营的核心系统,首先它要符合咱们的资管新规和理财新规,是新一代的理财业务的全流程管理平台,里面既包括销售注册登记,还要包括理财产品的研发设计、生命管理以及理财相关实时业务管理,能够说是被银行上下寄予厚望的一套系统。

在这里安利一下光大的理财,光大理财的品牌叫作七彩阳光理财,你们看到这个图里七彩阳光是七种不一样的理财风格,既有权益理财,也有混合型理财,咱们把 TiDB 用到了现金理财,就是绿色的这一部分,叫阳光碧现金理财,在这里咱们是在受众最广的渠道中去应用咱们真正须要它的技术。

并非说有了分布式数据库,整个就万事大吉,一键咱们分布式了,其实整个过程仍是很复杂的,咱们设计了全面的分布式架构来确保咱们的新一代理财系统可以支撑光大银行理财子公司的财富管理的业务,依托光大银行私有云基础设施,基于我行自主研发平台 4.0 开发框架,而且定制了分布式批处理的方案。咱们的设计目标是余额宝每小时理财交易 2000 万,零钱通单日 5000 万,同时还要知足将来三到五年的业务发展和接入更多互联网的渠道,其实他是一个面向将来的系统,这个系统去年 11 月上线运行,今年 4 月正式对外开放。

具体到了 TiDB,咱们此次实施的是 TiDB 3.0.5 产品,咱们在北京有两个中心,同城跨中心部署,15 节点,5 副本的 TiKV,设计的是 40TB 的逻辑容量,每一个节点是专门为这个项目采购的机架式服务器,有两个 4TB 的 SSD,24 核,512G 的内存。由于这是个重要产品,应该说“切入即决战”,因此为了保障新一代数据库的平稳运行,咱们能够开最好的车,可是必定要系好安全带,这个安全带就是咱们在实施的过程当中,除了 TiDB 自己,咱们还把 TiDB 的数据实时复制到了 MySQL,用一个异构的数据库来保证一旦出现极端状况,能有一个逃生环境,去挽救咱们的数据,挽救咱们整个的应用。你们都知道 TiDB 以前版本有个乐观锁特性(TiDB 4.0 版本 正式推出了悲观锁功能,和 RC 隔离级别,使用 TiDB 4.0 让应用适配更容易),这个是怎么适配的呢?后面 TiDB 有他本身的一个方案,可是咱们这个版本尚未这个特性,咱们在整个过程当中作了大量的适配的,在出现业务冲突的时候,应用程序和业务代码能捕获异常、重试机制,咱们和 TiDB 的专家也作了不少合做,咱们的开发人员也作了不少修改,为何这么作呢?仍是回到初心,咱们但愿用一个产品解决这个问题,但咱们不彻底依赖某个产品解决咱们的问题,咱们根据他的特点选定了他,而后咱们要适配他,这个事就像爱情同样,你爱他就要爱他的所有。

2. 云缴费

再安利一下咱们另一个项目,就是光大银行的云缴费。咱们有一个口号叫“云缴费缴出新生活”,这是光大银行近年来着力打造的一个名品业务,它也是咱们光大银行在金融惠民宗旨下,经过银行的资源、银行的科技能力不断的去方便你们,经过整合水、电、燃气等等项目,咱们向第三方开放这些缴费资源,把各个服务提供商整合在一块儿,向咱们其余的银行同业,行内、行外、某信、某宝这些第三方支付公司提供输出。你们用某信、某宝去缴费的时候可没有注意过,后面真正的缴费系统实际上是光大银行的云缴费。另外说一句云缴费实际上是光大银行目前 TPS 最高的系统,在这个系统中咱们用的是由光大银行、光大科技和万里开源合做打造的一款分布式数据库中间件叫 EverDB,是咱们自有知识产权的一个产品。

光大银行数据库技术领域发展规划

咱们回到初心,再分享一下光大银行在数据库技术发展上的规划。咱们虽然此次讲分布式,但分布式并非光大银行在数据库领域的全部,尤为银行的系统特色是系统多,咱们相信将来分布式数据库和集中数据库必定会各司其职。并非每一个系统都会用分布式数据库,分布式数据库适配的是那些大并发、高频次的业务系统,集中式数据库仍然有它的生存空间,并且从数量来讲,它没准仍是占相对大的一个比例,它适配的是传统业务系统,咱们经过 RDS 的服务化部署可以提供数据库服务,国外商业产品、国内数据库、开源产品结合使用,最后达到一个比较均衡的比例。在分布式数据库领域咱们会作到产品引入和自主研发结合,经过这种开放双赢的方法,打造有光大银行特点分布式的技术方案。最后在应用推广方面,今年咱们还会在互联网渠道、支付等系统中应用分布式数据库产品,同时咱们会启动新一代分布式核心建设。全部这些规划,咱们都很是欢迎像 PingCAP 这样有实力的公司和咱们共同发展、共同创造,固然更但愿数据库领域的专家还有才俊可以加入咱们,让咱们共同创造科技、创造财富。

本文整理自王志刚在  TiDB DevCon 2020 上的演讲。
相关文章
相关标签/搜索