前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >狙击枪和机器人都有了,我想给《庆余年》安排这个……

狙击枪和机器人都有了,我想给《庆余年》安排这个……

作者头像
腾讯云数据库 TencentDB
发布2019-12-30 15:10:17
1.1K0
发布2019-12-30 15:10:17
举报

最近席卷全网的神剧《庆余年》,听说一开始不屑一顾的人,看了之后都会说“真香”。

数据君1.5倍速补课之后,秒被爱财怕老婆又善吹彩虹屁的老王圈粉。

众所周知,“宝藏男孩”王启年贪财和怕老婆两个特性不分先后,赚钱藏钱一把好手。

要薪资的时候,他这样说:

为什么要藏呢?他的钱全部上交给了老婆,享受“体贴入微”的搜身,平日里也只能想尽办法藏点钱充到小金库。

办公室文件里有银票:

脚趾缝里有铜板:

请范闲吃饭,从鞋袜中掏出两枚铜钱,豪气的说:“我请你吃饭!”这对他来说,简直是最破费的一次了。

但是,我们的小年年却是个心地良善的小伙子,在所有人都以为滕梓荆被杀身亡时,他从小金库拿出一百两为滕梓荆的遗孤安排住处。

要知道宝藏男孩骗官二代富二代买地图,废了一番口舌才能卖2两银子。

编剧,这文案也得值5两银子吧!你怎么忍心让小年年藏点私房钱都这么困难呢??

巴特雷和机器人都能有的时代,还有什么梦不能给实现?

来呀,给小年年安排上穿越版银行,刷脸花钱存钱,把银票这样的凭证都省了,好好宠爱他!只要钱存在银行,眼睛一眨,多少钱都咔咔秒级到账。

但是,有人问了:按照王启年爱财如命的性格,他能放心把钱放别人那里吗?就比如我,我把钱放我兜里,花多少还剩多少我都门儿清,但是银行每天面对那么多笔交易,是怎么把每分钱都安排的明明白白呢?

1

PartⅠ 银行系统大起底

这就涉及到了银行的看家本事。

简单来说,银行会用两套系统——核心系统和外围系统——来保证每笔交易的准确无误。

核心系统,名字听起来就很重要。是的没错,核心系统相当于银行的心脏,所有和钱有关的交易都需要经过核心系统,完成资金的清算核算。换句话说核心系统需要和其他所有关于钱的系统打交道,因而它的业务逻辑也最为复杂、最为关键,它直接影响着银行核心资产相关的数据

外围系统,就简单多了,一般泛指渠道类业务,比如:手机银行、贷款、柜面、ATM等。外围系统一旦涉及到金钱交易,必须通过核心系统完成资金的清算结算。一个外围系统一般都是一个单一的业务场景,所以一个外围系统故障只影响当前业务,不会影响全局。

所以,核心系统的每一个数据都代表着真金白银,错了那么一个符号,王启年存在银行的银票可能就归零了。而数据库是影响银行核心系统能否正常运行的核心。

保障核心系统的持续高可用,可不是一件容易的事。

1

Part Ⅱ 给银行心脏做手术

传统银行中,张家港农商银行就遇到了考验。2019年,张家港行现有的核心系统的数据库架构已经无法满足需求,业务在高峰期经常会遇到请求卡顿,响应缓慢,机器资源负载偏高等问题,故决定对数据库系统进行升级换代。在对数据库选型时,行方面临两种选择:一种是主流传统的集中式数据库架构,如:Oracle、Sybase等,另外一种则是国内互联网企业主推的分布式数据库。

值得一提的是,在张家港行之前全国没有任何一家传统银行尝试过将核心系统迁移到分布式数据库上,业内只有部分互联网银行的核心系统使用了分布式数据库(如微众银行),而其他使用分布式数据库的传统银行大多都是一些外围系统。

为什么会“前无古人”呢?传统银行的外围系统、互联网核心系统大多都是新系统,没有复杂的历史包袱所以迁移到分布式数据上的风险和难度都在可控范围。而核心系统是银行系统中的“心脏”,和银行日常各种复杂业务有着千丝万缕的关系,对它的改造,如同给银行系统的“心脏”做一次手术

也就是说,既没有第一个吃螃蟹的银行,核心系统的改造难度也堪比登天,那么张家港行,要怎么选呢?

经过对国内外众多数据库产品进行POC测试选型,张家港行最终决定选用腾讯云国产数据库TDSQL。

在对TDSQL可用性、数据一致性、兼容性等特性充分验证的基础上,张家港行首先在外围系统进行了TDSQL的试用,在稳定运行1年后开始进一步对核心系统改造,最终历经13个月完成了在核心系统下对TDSQL交易性能、高可用、异常处理、分布式事务等特性的全方位的测试调优,于2019年8月16日成功上线。

改造成果

投产后新核心系统相比旧核心系统有了很大的提升,高频账户类交易耗时在 300 毫秒之内,查询类交易耗时在 100 毫秒之内,20 秒内可以完成 1 万笔批量代发代扣业务,日终跑批耗时14分钟,存款结息耗时11分钟,贷款结息耗时3分钟,相比老核心100TPS的处理能力,新核心可以达到6200TPS,并且支持在线横向扩展。

相比老核心日终批处理耗时60分钟、存贷款结息耗时180分钟有着质的变化。以上批量业务过程中数据库负载均在10%以下,完全满足该行未来五到十年业务发展需求。

成本方面,硬件均采用x86服务器,取代大型机、小型机。以近期上线的某商业银行为例,按照传统“IOE”架构,硬件成本在4000万-5000万,系统处理能力为8000TPS左右(账户数5000万)。而张家港行采用分布式数据库架构,硬件成本为600万,仅为传统架构成本的1/7,相比老核心100TPS的处理能力,新核心可以达到6200TPS,并且支持在线横向扩展。

这个性能指标,不仅对农商行,对较大规模的城商行甚至中小规模的全国性商业银行都绰绰有余。

1

Part Ⅲ 心脏手术过程全揭秘

这样困难的核心系统迁移改造,具体是怎么实现的呢?

一、核心系统改造

从传统集中式数据库转变到分布式数据库对任何业务来说都是极大挑战,这种挑战主要体现在数据的组织方式变化后带来的一系列问题,包括语法差异、性能差异、兼容性问题等。

在张家港行科技团队、银行系统开发商长亮科技团队以及腾讯云共同的努力下,这些问题得到了完美解决。

首先,我们按照分布数据库的建表规则,重新对库表进行了设计,结合全局业务选择出最佳的字段作为分片关键字。然后,针对分片关键字以及索引做持续优化、调整,通过查询优化器对其持续改良,寻找最佳实践最佳性能。当然这个过程中也遇到了一些由于MySQL生态和Oracle生态这两种数据库本身语法差异,如:rownum、nal、to_cahr、full join等,对于这种问题业务通过最小范围的代码调整对其进行规避解决。

此外,在原先的集中式数据库上,业务用到了很多存储过程、触发器、函数等数据库的高级特性,这些特性在分布式场景下并不是一个好的选择,因为将计算相关的逻辑下沉到了数据库,与分布式数据库只做数据存取的初衷相违背。在梳理清楚这些高级特性后,把存储过程、触发器、函数等计算相关的逻辑上浮到业务层中。

对于较为复杂的SQL,尤其是涉及跨多个数据节点关联的SQL,这类SQL会引起分布式数据库性能急剧下降。因而要求业务将复杂SQL拆分,将其变成简单SQL,且简单SQL尽可能控制在发往统一分片。当然,经过前述优化依然有一些复杂SQL,可能由于其语法特殊性无法通过直接对其改造来解决,针对这种情况,腾讯云TDSQL产品团队也配合张家港行做了大量针对复杂SQL语句的优化,如:子查询上提、左连接消除、丰富下推逻辑以及基于统计信息的条件推导逻辑等,尽可能提高处理这种复杂SQL语句的性能。

经过上述改造,核心系统的各项功能在TDSQL下得到了成功验证。通过TDSQL配套的性能优化工具,持续对分片关键字、索引进行优化调整,最终达到了远高于业内平均水平的性能指标。

二、高可用部署架构

TDSQL在张家港的部署架构为两地三中心模式,同城的两个机房分别为主机房和备机房,异地机房做城市间灾备使用。SQL引擎作为TDSQL计算接入层,通过F5负载均衡接入对外服务。多台SQL引擎组成高可用集群,任何一台网关节点故障,F5会自动将其踢掉,继而其他SQL引擎继续提供服务。存储层为MySQL集群,主备间复制关系为同机房异步跨机房强同步,保证任何时候备机房都有主机房数据的完整副本。基于Rafs协议的强同步复制,要求多个强同步的节点中的任意一个应答成功即返回业务成功,最大限度的减少了机房间链路抖动对业务的影响。经验证,该部署模式下TDSQL的RPO为0,RTO小于等于30秒。

三、水平伸缩

TDSQL作为分布式数据库,水平伸缩是其基本的能力。TDSQL基于share nothing的架构,将数据库的计算层和存储层相分离,将逻辑上的一张库表中的数据通过哈希均匀分布在多个物理节点上。当由于机器资源达到瓶颈时,通过水平扩容轻松将一台物理机节点上的数据拆分到新加物理节点,实现数据的重分布,进而降低的单台物理节点的性能、资源瓶颈。

四、分布式事务

分布式事务作为分布式数据库中使用最频繁的特性,其健壮性关系着数据的一致性、精准度。银行使用场景更是对分布式事务的可靠性提出严苛的条件。

TDSQL分布式事务基于MySQL经典的XA两阶段提交,并对官方XA事务做了大量优化和Bug修复。TDSQL的SQL引擎模块作为分布式事务的协调者发起分布式事务,首先完成第一阶段的Prepare操作,当完成Prepare操作后会在TDSQL的Commit log中记录第一阶段的状态,紧接着再到逐个资源节点尝试commit。TDSQL的分布式事务容错技术考虑了两阶段提交过程中各类异常场景,包括Prepare 超时或者失败、Commit log写失败、Commit log写超时、Commit超时或者失败等等。

在张家港行的数据一致性验证场景中,TDSQL在48小时内进行了2000多次故障切换,同时保持不断发起分布式事务,经验证最终数据保持一致,并未出现乱账、错账、账不平等异常。

五、异构数据库同步

张家港行的传统核心采用分布式数据库为全国首例,无成功案例可参照。为了控制系统性风险,TDSQL团队设计了异构数据库数据同步方案:基于生产者消费者模型,通过生产者将TDSQL日志采集到消息队列,再利用消费者将消息队列中的日志消息消费到异构数据库。

同时业务侧也做了大量改造,同时支持集中式存储和分布式存储的两套业务系统。经实际验证,在TDSQL完全不可用情况下应用可以在分钟内切换到集中式数据库并对外提供服务。

1

Part Ⅳ 在互联网银行的落地实践

在为张家港行换“心”之前,TDSQL已在互联网银行有了落地实践。

微众银行作为国内首家互联网银行,也是第一家基于腾讯云分布式架构进行系统搭建的银行,完全采用了互联网分布式架构,TDSQL作为微众银行的交易核心数据库,部署超过1500+个实例,承载全行所有 OLTP 业务,相比较金融行业普遍使用的传统商业数据库,腾讯云金融级分布式数据库TDSQL降低了微众银行约80%的账户运营成本。2017年微众银行将每个账户的运营成本降至平均只有6元人民币,仅为内地传统银行的1/10,相比国际银行则更低,只有其成本的2%至5%。

如此震惊业内的成果是怎么实现的?点击下方视频听听微众银行怎么说~

"腾讯分布式数据库TDSQL在微众银行的架构和应用"

微众银行数据库平台室经理 胡盼盼

目前 TDSQL 已正式通过腾讯金融云对外输出金融级分布式数据库产品服务,除了微众银行,腾讯分布式数据库 TDSQL 还支撑着华通银行、华夏银行、潍坊银行、内蒙金谷农商银行、北京人寿、爱心人寿等众多银行和保险公司的互联网核心生产系统,并已经为超过 500+ 的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网 +、政务等领域,得到了客户及行业的一致认可。

未来,腾讯云还将加码数据库的研发,在数据库底层为企业提供更多贴近业务场景的应用与服务。


今儿就聊到这儿,让我们期待明天隔壁老王能深夜回家不被打,还能用微信给老婆买圣诞礼物,祝大家圣诞快乐

年终回馈 

↓↓更多惊喜优惠请点这儿~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云数据库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档