作者| 王德清
出品|雷锋网产业组
前言:很长时间以来,大多数据库从业人士都将IBM大型机、Oracle等传统数据库奉为经典,尤其对于数据库有着极高要求的金融行业来说,在他们眼里,地球上没有任何一个数据库能比他们更稳定了。
随着产业环境的变化,以Oracle、IBM、微软三足鼎立的数据库市场格局正悄然发生着改变,而在这一变化过程中,国产数据库也顺势而为向传统数据库发起了冲击,并打破了银行核心系统只能用Oracle数据库的“潜规则”。
对此,雷锋网与腾讯云数据库TDSQL团队6位老兵展开了一场深度对话,还原了以TDSQL为代表的国产数据库的进击之路。
把时间线拉回到2005年。
彼时,员工平均年龄只有26岁的腾讯,如同一支不起眼的轻骑兵部队,在刚刚兴起的互联网社交化浪潮中开疆拓土,以QQ为基础打造了QQ空间、QQ游戏、腾讯网等爆款产品。
“腾讯之前的业务都比较聚焦,我们作为公司的计费团队,承担着公司所有收入实时计费工作,同时每天我们还有大量复杂报表计算。”
说这句话的是现任腾讯副总裁李纲,2003年加入腾讯的他就一直都在腾讯的计费部门工作。随着腾讯在SNS时代打败了51.com、人人网、开心网等对手之后,QQ空间等产品带来的增值业务也水涨船高。
腾讯计费团队合影
此时有一个问题摆在了李纲的面前:技术上使用的MySQL开源数据库,面对用户爆发式增长,会经常出现不稳定,故障主备切换不及时、不准确等各种各样的问题。
“集中式数据库的产品力很强,兼容性非常强大,但是有一个问题是,边界感是也是非常明显的,你到了它的系统极限就会出现问题。”李纲说到。
而当时,腾讯并非是今天这样的互联网巨头,在各个领域腾讯都在与其他对手激战正酣。如QQ空间有51.com、人人网、开心网等多个对手,游戏领域则有网易、盛大……
显然,如果不将技术层使用的数据库出现的问题解决掉,腾讯将无法在各个领域拿下“山头”获得胜利。
在此背景之下,内部经过了多轮讨论之后,技术部门终于做出了决定。
自己做数据库
“业务需要做这个事情,我们就想着先把它做好,也没有想未来要干成什么样的事业。。”
对于那时的心态,潘安群(现腾讯云数据库技术负责人)依旧记得很清楚。
没错,腾讯计费部门作出的决定就是要自己做数据库,正当李纲他们做出了这个决定之后,时任腾讯CTO的张志东,提出了一个要求:腾讯所有的账户都要像银行一样做到一笔都不差,一分都不差。
而这个要求说白了,既然你们要自己做数据库,那这个数据库就要做到金融级的。
有朋友比较清楚,金融行业对于数据库的要求是最高的,可用性要达到99.999%,也就意味着,全年数据库发生故障的时间不可以超过5分钟。
这不是一件容易的事儿。结合腾讯具体业务,除了张志东的要求可靠性和一致性之外,自研的数据库还需要做到可以无限水平扩展,即能够根据业务需求进行延伸。
“我们很多业务不能接受很长的交易时长,比如游戏里面买一个道具,微信里发一个红包,它是要马上到账的,因此对于我们数据库的稳定性、可靠性、性能以及可延展性都提出了很高的要求。”
在QQ空间、QQ游戏、财付通等一系列业务推动下,定位于金融级一致可靠、互联网弹性扩展、高性能的分布式数据库系统就从2007年开始逐步在腾讯内部孵化,就是后来的TDSQL。
QQ空间登录页
就在计费平台等多个部门的共同努力下,腾讯在2008年拥有了QQ、QQ空间、QQ游戏和腾讯网四个亿级流量入口;2009年,腾讯网游收入超过盛大;2010年的3月5日晚,QQ同时在线人数超过1亿……
经历过那段时光的朋友都知道,腾讯那时有着难以掩盖的光环。在这背后,腾讯自研的TDSQL数据库也有着无法忽略的功劳。
安心喝咖啡
2010年,腾讯成立12周年纪念庆典结束之后,马化腾发出了一封题为“打开未来之门”的全员信。
马化腾全员信截图
“开放”成为了这封全员信的核心思想,这也是腾讯决策层第一次将之定义为战略级的行动。
技术层面,腾讯推出了开放平台(腾讯云的前身),允许外部开发者接入。对于数据库、共享存储等基础支撑平台,意味着其不仅要支撑腾讯内部业务运转,也更要保证外部客户平稳开发和运行。
“腾讯内部是大胖子业务,体量非常大(用户数都是千万级往上),到了开放平台我们做的时候发现很多小业务(用户百万级,甚至更少),相对来说,由于场景差异化,他们更容易出现意想不到的故障。”潘安群如是说到。
“这对数据库的稳定可用、标准化服务方面提出了更高的要求,我们需要提供一个更加完整的底层数据库解决方案才能够让他们尽可能避免各种问题。”
内部微信支付、网络游戏……,外部的不断增加的开发者,TDSQL就在业务的推动下不断发展锤炼。
到了2014年,以金融级场景为例,TDSQL已经支持了腾讯内部90%的计费业务,托管了数百亿账户,每天进行数亿笔交易。
对于拥有梦想的技术人员,从来都不会安于现状。他们清楚,TDSQL在内部业务的驱动下,已经达到了团队当年提出“安心喝咖啡”的目标。
就是说,TDSQL在各种突发情况下,例如断电、服务器故障,工程师依然可以一边喝咖啡,一边抖着腿看系统“自愈”。
“TDSQL在研发之初,就是默认所有的硬件设备都是不稳定的,所以应对任何硬件发生的问题都能够很快的解决掉。”李纲对雷锋网说到。
点燃心中的火苗
“我们此前有些保守,业务有什么需求,我们就做什么满足他的需求,但2014年之后我们觉得要有更高的挑战,我们希望技术的选择、探索能够走在业务的前面。”
而这个时候正好有一个机会摆在了李纲他们的面前:国内首家民营银行和互联网银行——微众银行,面临着数据库的选型。
“微众银行的定位是普惠金融,他们希望将IT成本降下来,并且能够广泛服务用户。”李纲回忆到。
显然,这样的要求下,以Oracle为代表传统集中式数据库首先就被排除在外了,微众银行CTO和李纲聊了半个小时之后,最终选择了TDSQL作为核心系统数据库。
TDSQL就此成为了第一个使用在银行核心系统的国产数据库。
“我们不仅感觉很惊奇,而且还胆战心惊。我们和微众刚接触的时候,会跟他们说我们一致性、性能做的有多好,而他们首先跟我们讲的是,先不说别的,可用性、稳定性能不能保证?”潘安群对雷锋网说到。对于银行等金融机构来讲,故障超过半小时,就已是非常严重的级别。
因为是首次应用在银行核心系统,无形中给潘安群他们带来了很大的压力,但在微众银行开发人员与腾讯技术人员努力了半年之后,2014年底,微众银行核心系统正式投产,承载了微众银行数百个核心系统和全行所有OLTP业务。
当前,微众银行每一个账户的科技运维成本降至仅为3.5元/年,仅为国内其它银行的1/10,相比国际银行则更低,只有其成本的2%至5%
截至目前,微众银行基于TDSQL搭建的分布式银行核心系统已成功服务超过2.5亿客户,实现年均日交易3.6亿笔,单日交易峰值近6亿笔,最高TPS达到10万+。
这个项目也成为了腾讯金融云第一个案例,而这个案例点燃了潘安群他们心中的火苗:让TDSQL真正的走出去。
早期核心团队合影,前排右三为潘安群
一点点看着TDSQL长起来的潘安群很清楚,TDSQL 实际上已经完全具备了承担银行核心交易的能力。放眼当时整个行业来看,极大部分金融政企机构核心数据库仍受制于国外传统集中式数据库产品。
然而,让大家都信服TDSQL的能力,微众银行的案例还缺少点意思,主要有以下原因:
微众银行是腾讯发起成立的,选用了TDSQL缺少了些说服力;
微众银行是一家互联网银行,没有线下网点,业务模式也和传统银行很不同。它能用国产数据库,并不完全证明传统银行也可以用。
微众银行的系统搭建是从无到有的过程,不涉及到替换的问题,TDSQL能否真正应用于金融传统核心系统还无法证明。
但对于心中已经燃起火苗的潘安群,这股火一直都在憋着。
就在2016年11月10日,潘安群发了这样一条朋友圈:力争让每一张钱都能打上TDSQL Inside的标签。
真正的舞台
这些年,国产数据库发展创新持续在进行,不过一直都没有触及传统银行核心。
在这个过程中,TDSQL的研发人员也都没闲着,一直在打磨着产品。
“客户使用数据库产品希望是一键式的,不仅是在开发的时候,包括以后业务扩容的时候都是轻量化、标准化、不容易出错,这是最重要的。”TDSQL专家工程师雷海林对雷锋网接着说到:
“对此,我们打造了DBbrain智能运营平台;在迁移的兼容性方面,我们同样也做了很多的工作。”
在这些工作全部完成之后,雷海林他们很清楚,TDSQL已经完全具备了标准成熟的数据库产品所要求的能力。
机会总是会留给有准备的人的。
2018年,张家港银行核心系统使用的Sybase数据库已经跟不上业务的发展了。
一到年底银行业务高峰期,CPU使用率就冲上去,I/O 吞吐也直接到瓶颈,有时候跑着跑着,核心数据库突然就卡住一秒。而核心数据库卡住一秒,张家港行科技部数据库团队也跟着紧张一秒。
一旦哪天真的停了下来,后果将不堪设想,这也让行领导决定升级其核心系统数据库。
银行升级核心系统数据库一直以来的潜规则是,首选考虑的会是Oracle数据库。然而整个Oracle一套软硬件核心就需要大几千万的支出,同时集中式数据库并不符合云时代弹性扩展的趋势。
就在张家港行科技部数据库团队负责人卢丽欢犯难的时候,和张家港银行、TDSQL有过合作的长亮科技团队得知了这个消息,不断给张家港银行安利TDSQL。
“不仅性能好,价格也便宜!”
听到TDSQL的能力和价格,卢丽欢心动了。然而方案提交之后,就引起了轩然大波,因为在国内还没有一家传统银行核心系统数据库升级选择过国产数据库。
但此前张家港银行的一个非核心系统使用过TDSQL数据库,表现也很稳定,因此这个方案让张家港银行的领导有了些心动。
开了10多次会进行论证之后,行领导最终拍板确定,这次银行核心系统数据库就选用TDSQL。然而,为了安全,这次核心系统数据库替换采用赛马机制进行:
同时建造一套基于TDSQL数据库的系统和一套基于Oracle数据库的系统,二者互为备份,到投产前再决定谁来成为主数据库。但是,无论是TDSQL还是 Oracle,都要满足一个硬指标:1500TPS。也就是至少支持每秒1500次的交易。
“张家港银行领导的这个决定让我们燃起了斗志,能给我们一个突围的机会就已经很不容易了,也让我们有了更大的动力来做这个事情。”TDSQL高级工程师张文对雷锋网表示到。
至此,腾讯云数据库团队期待的真正舞台拉开了帷幕。
掀开新的一页
说到这儿,我们不得不提长亮科技。如果把TDSQL比作一块砖的话,腾讯云做的是提供“砖”的事情,长亮科技则负责把从腾讯云搬过来的“砖”砌到张家港银行的服务器上。
2018年10月,长亮科技团队进驻了张家港银行的机房,开始了第一次的测试。
当将TDSQL数据库灌入服务器,机器点亮,第一次测试开始,当结果出现之后,结果却令现场的人大跌眼镜:100TPS,只有目标成绩的十五分之一。
当远在深圳的张文听到这个结果时,立马感觉不可思议。然而白纸黑字的结果就摆在那,既然你说不可能,你来呀!
张文第一时间从深圳出发,他坚信TDSQL绝对没有问题,只是个小问题,两三天肯定就解决了。
然而落地赶到张家港银行之后,自信的他,身后也冒起了冷汗,再看到身后银行领导的眼神,压力更大了。
为了找到问题,项目组工程师一条一条的SQL语句去测试,很快,发现行里原有库表设计有一个小问题,只要略微调整一下,TPS 的表现就能瞬间回血一大格。
时间也并非如张文所预估的两三天,经过半个多月的优化,TDSQL性能直线突破了1500TPS,张家港银行领导的眼神也变得如往常一样热情。
就这样,搭载TDSQL数据库的核心系统建好了,为了保证系统稳定性,项目组工程师又开始进行兼容性测试。
这里需要说清楚的是,银行核心系统就像大树的树干,基于这个树干会长出多个系统出来,这也就意味着,树干必须要保证与树枝之间兼容,而在张家港银行,基于核心系统“生长”的系统有上千个。
为了保证与其他系统的兼容性,长亮团队工程师选择了500多个常用的交易系统,就这样一步一步的测试,所有人的心也都放了下来。
最终,行领导决定:正式把TDSQL作为主数据库,Oracle数据库作为备份。
监管机构也认可的这个计划,上线时间也随之被确定:2019年8月16号。
当所有人都在盼望着最后一刻到来的时候,却又发生了一件诡异的事情。
“当时他们采购了一批机器,这批机器规格和我们测试环境一模一样,但在实际测试时候发现,网络I/O时快时慢,你没有请求时机器性能很低,如果给它压力比较大,性能就发挥得很好,我们觉得很诡异,与正常的反应正相反。”张文回忆到。
面对这个情况,不仅是身在张家港的工程师,包括腾讯深圳本地的工程师都开始来帮忙定位这个问题。甚至当时还联系了服务器厂家,然而厂家也没能给出具体的解决方案。
“越是危机,越需要冷静。很快我们就发现服务器本身的接口其实很空闲,那么时延很可能来自网络。赶快抓包分析,问题被定位在了数据库服务器网络模块上。再细致定位,问题出在网卡上。”
经过大家的共同努力,很快从一个国外论坛上找到了线索:戴尔服务器为了节能,会在极端高并发的时候,自动开启网卡的省电模式,问题随之被解决。
坐在桌旁回忆起这段往事的张文,至今仍心有余悸。
“如果没有找到问题的话,我们可能就需要用测试的机器来顶上了,虽然这批机器被我们一年多的测试折磨得千疮百孔。但这并不是我们想要的方案。”
2019年8月15日23:31分,张文发了一条朋友圈:
《张家港十二时辰》暑期巨献!
激动的心情溢于言表,并配了下面这张图。
2019年8月16日21:00,星期五,张家港银行老的核心系统熄火。
2019年8月18日18:00,星期日,张家港银行新的核心系统启动。
然而,每个人的心依旧在悬着。
2019年8月19日10:00,星期一,张家港银行交易量猛冲,达到峰值,然后缓慢回落。
成了,大厅里掌声雷动。
从这之后,张家港银行成了“旅游胜地”。嘉兴银行、富邦华一银行、青海省联社、山东城商联盟、华通银行纷纷派人来参观取经。
值得一提的是,张家港银行使用的TDSQL经过优化之后,核心系统可以达到6200TPS。在性能方面,高频账户类交易耗时在300毫秒之内,查询类交易耗时在100毫秒之内,20秒内可以完成1万笔批量代发代扣业务,日终跑批耗时17分钟,存贷款结息耗时16分钟,相比老核心日终批处理耗时60分钟、存贷款结息耗时180分钟有着质的变化。
同时,成本更是被极大优化。一个可以比对的数据是,集中式数据库综合硬件成本估算在4000—5000万,而张家港银行的分布式TDSQL方案不到1000万,降低了近75%。
而那个被用来作为备份的Oracle数据库,最终没被派上用场。
新的时代
就在张家港银行核心系统上线之后,咨询TDSQL数据库的银行多了起来,就在张家港银行项目结束之时,TDSQL的另一个团队正做的热火朝天。
平安银行信用卡A+新核心系统数据库选型也选择了TDSQL。而这次,更是一次业内首次将银行核心系统从传统集中式大型机下移至国产分布式架构平台的尝试。
负责这个项目的同事是王辉,他对雷锋网表示到:“平安银行的科技能力在全国都算是名列前茅,所以他们本身对合作对象的能力要求非常高。”
在这个高要求下,系统开发的过程自然并不会一帆风顺。
“平安那时候采购了两批机型,戴尔和联想的,他们在测试TDSQL的时候戴尔服务器延时偏大,联想偏小,发现这个问题之后,他们还未查明原因,就直接到我们项目会议室说你们产品有问题,赶紧把谁给我叫过来看一下。”
当时,平安的负责人很着急,王辉希望对方能够把情况讲清楚,但对方却认为已经没有时间间去详细沟通这个事情,认为产品存在性能问题。双方紧张之下,王辉只好到楼下买了一瓶饮料喝了下去,转了一圈才上去。
上楼之后,首先跟对方先对了一个规矩:别着急。
之后在腾讯同学的测试下,发现是两批服务器的配置不一样。向行方提供了详细测试报告后,腾讯同学的专业折服了平安的负责人。
而这时候,他们也有了一个约定,等系统平稳上线之后,要一起喝顿酒。
而就在正式上线前最后一次版本升级过程中,为了确保升级过程顺利,腾讯云事先通知了升级期间应用不能进行压力测试,但是这个通知被行方无意中疏忽了,而在腾讯升级时,仍然做了压力测试导致出现了一些问题。
第一时间,平安银行就通知了腾讯云认为产品又有问题,而5分钟后,平安银行则又通知不是腾讯云的问题。在此之后,为了让客户加强对产品的信心,双方定下了一个“15分钟原则”,即问题发生后双方各自检查15分钟,再一起交流、沟通。
雷峰网(公众号:雷峰网):“这是不是一个由不信任到信任的过程?”
王辉:“是的,虽然他们选择了TDSQL,但是开始并没有太相信我们,而我们不管是什么问题,都会帮助他们解决,最终都满足了他们的要求。”
有着Oracle和AWS从业经历的王辉对雷锋网表示到,这样的服务在与跨国公司的合作中根本体验不到,其中有以下3个原因:
第一,语言障碍,这是最大的问题;
第二,国际化的企业很难为某个客户定制;
第三,整个服务流程和问题处理流程非常长,它的时效很难满足国内个别客户的要求,尤其是金融要求,你要达到这个时效,付出的费用非常高。
就这样,在腾讯事无巨细的服务之下。2020年10月31日凌晨5时,平安银行信用卡A+新核心系统成功上线,其新系统能保障10亿级交易账户,并可实现10亿级的海量日交易量,真正为平安集团接下来的“双11”大战构建出铜墙铁壁。
“上线前的头两周和上线之后的后两周,我们是24小时响应的,投产的那三天我们是24小时大概有6个人在现场。”王辉回忆到。
在他看来,给客户的感觉就应该是产研包括腾讯云团队都在全程保驾护航。
也就在对话结束之后,王辉和张文便匆忙赶往机场,去为另一个客户提供技术服务。
一条正确的路
“我是2003年加入的腾讯,在这个过程中我们整个数据库团队到目前为止,主创团队所有成员几乎都还在,团队超级稳定,我们昨天晚上和微众银行一个合作很深的部门年度聚餐,连着六年聚餐,发现都还是那些人。”李纲回忆到。
2017年腾讯云TDSQL团队满十年工龄员工合影
“我们过去十多年基本上没有走偏过,这也是能够让我们团队始终保持稳定非常重要的原因。”潘安群也如是说到。
稳定的团队,吸引了更多的数据库人才不断加入这个团队。加之公司持续不断地进行投入,则让这个团队在每一个方向点选择上的坚定一致。
“数据库的正朝着云原生、超融合、国产化这三个方向进行发展。”
2020年12月24日,腾讯云正式宣布数据库品牌TDSQL全新升级,李纲在舞台上如是说到。
原有的TDSQL、TBase、CynosDB三大产品线统一升级为“腾讯云企业级分布式数据库TDSQL”,升级后的腾讯云TDSQL将涵盖分布式、分析型、云原生等多引擎融合的完整数据库产品体系。
“我们更希望客户、包括行业对腾讯云数据库体系能有一个更清晰的认知。”李纲表示。
根据他回忆,因为三个数据库名称和自身特点本身就没有吻合的匹配度,甚至有不少客户会产生“该选用哪个数据库”的困惑。
同样在他们看来,未来超融合技术体系还会解决多引擎共存下对云数据库的开发与应用选择带来的挑战,TDSQL也将通过AI智能调度,以及Serverless等方案,来实现多引擎的统一标准化服务,让用户能够快速实现研发及服务的全链路打通,而无需关心技术细节。
回望TDSQL这段从开源到适配,从适配到自研的历程,腾讯云将每一次经由业务适配考验后的思考、经验都化作数据库服务的“活水”,灌溉自身业务的同时也灌溉了行业、开发者社区。
从企业内部走向产业市场,历经金融、政务、教育、文旅、工业、医疗、交通等多个场景的TDSQL,已经从产品化、技术成熟度、实际行业场景打磨的成长阶段,走向了推动国产化数据库良性发展的阶段。
事实证明,TDSQL走的这条路是一条国产数据库可以走得通的路。
必须承认的是,与国际上通用的商业数据库产品相比,国产数据库还有不小的差距。但通过国内数据库企业不断的“自我博弈”,这样的差距必然会越来越小,甚至在云时代实现超越。
发表评论 取消回复