国产数据库从平替到优选

胡说成理 2023-04-16 15:02:23

导语:

十年磨一剑,霜刃未曾试。

当前,国产化和自主可控已经成为科技领域最重要、最紧迫的战略。但是,在先进芯片、操作系统、大型分布式数据库方面,我们还缺乏市场的主导权,我们还需要真实的产品而不是实验室成果,来证明我们可以实现从 " 平替 " 到 " 优选 " 的跃迁。

为此,有这么一支团队,打算冲击世界数据库的顶峰榜单,用产品说话,用产品和用户沟通,证明我们加强在核心关键领域的 create by china,是可以通过日积月累而实现的。

而他们的底气,是此前十四年的时间里,慢慢积累起来的。

现在,他们成功了,至少从某个维度上,他们证明了中国已经拥有全世界最强大的分布式数据库之一。

在这个特殊的历史窗口期,这个成绩的取得,至少证明 " 卡 " 在我们经济咽喉上的手,又少了一只。

1、提头来见

2023 年 2 月 18 日的晚上,一通越洋会议以后,腾讯云数据库技术负责人潘安群的脸色糟糕到了极点。

就在几分钟之前,国际事务处理性能委员会(TPC)的一位身在美国东部的审核员通过视频会议告诉他,因为此前数据导入的设置某个随机参数有问题,不能够在目前搭建的环境中进行 TPC-C 测试。

潘安群的脑子里,不停的回响着两个月以前向公司申请参加 TPC 测试时的场景。

"1653 台物理服务器,再加上 1000 台虚拟机,这相当于一家大型银行把用来跑数据库的服务器集群的 1/3-1/2 都给了你 ",相关负责人说:" 要是搞砸了,那你和我就只有提头去见…… "

但潘安群笑了,他要的就是这一句话。

1988 年 8 月 10 日,Omri Serlin 先生说服了八家公司成立了 TPC,从而启动了计算机行业的第一个标准机构,它从一开始就是为评估计算机系统的商业能力而生的。而 TPC-C 作为该组织最知名的评测规范,则是为评估 OLTP(联机事务处理过程)而设置。简单说,它开创性的把数据库 + 联网条件下的性能作为核心测试目标,从而成为现代金融业进入信息化时代的评估基准之一。

有很多我们耳熟能详的企业是这个机构的会员,包括微软、亚马逊、英特尔、英伟达、AMD 等,随着中国 IT 产业的崛起,也有阿里、清华大学等国内机构成为 TPC 的会员和准会员。

TPC 本身是一个规模非常小的组织,但它的挑战性主要是由它独特的规则造就的,它仅仅提供一套测试规范,即用电商批发业务混合了只读和读写等复杂事务来模拟真实场景。

这就好像你走进一间房子,里面要求你用乐高积木搭建一座摩天大楼,但房间里没有任何乐高的组件,你得从自带工具、自制模块开始直到完成整个测试。测试说明文档有上百页,其中,如果对部分规则的理解有偏差,可以和独立审计员进行沟通。

除了时间不够用的问题,审计员的 " 解说 " 也是不够详尽的,因为针对数据分布、测试时间等要求有许多规则和限制,但审计员每次开会都只会介绍一小部分,很难详尽展开说明。

但团队已经顾不上琢磨审计员的态度,因为出了问题的数据不是一点点,而是—— 20 万亿个订单。

2、生死时速

在解释为什么有 20 万亿个订单之前,我们先直接跳到测试的结尾,对于 TPC-C 的测试来说,有各种数据维度,但最核心的是有两个——每分钟完成的事务数(tpmC)与完成每个 tpmC 的成本价格(price/tpmC)。

前者反映的是处理能力,后者反映的是控制成本的能力。同时,它们还是一套自洽的反作弊机制——如果企业通过追加服务器来提升处理能力,那必然反映为难看的硬件成本飙升,所以这两个数据必须都好,才算赢。

但是,真正的压力是,架构层面存在巨大差异:TPC-C 诞生的年代,还没有成熟的分布式数据库生态,所以它基本是一套基于考验集中式系统而设计的标准,但腾讯云的 TDSQL 数据库却完全是标准的云原生 + 分布式架构。

大概在十五年前,从华中科技大学毕业的潘安群加入了腾讯,第一天他就开始和泛金融业务打交道——要确保 Q 币交易系统的资金账户系统安全、准确,也是在这个岗位上,他开始搞定当时经常出问题的 Q 币系统,也可以看作是整个腾讯体系内自研数据库的出发点。

两年之后,另一个问题迫面而来——当时开心农场的 " 偷菜 " 游戏火遍全国,腾讯的系统每天早上都要宕机,潘安群和同事自研了一套可以看作是弱化版的数据库的 NOSQL 系统,解决了系统弹性存储的问题。也从这个节点上,腾讯对高性能吞吐、分布式水平扩展、分布式 KV 存储等进行了研发布局,帮助摆脱业务系统流量对服务器数量的依赖。

之所以举这两个例子,是因为这代表腾讯这样的从 C 端业务起家的中国互联网企业的典型场景——早期技术实力不够雄厚,但场景丰富、用户数量惊人,因此对系统的弹性和成本十分在意。

但这和金融业的要求是恰恰相反,银行要求的是毫厘不差,缺的是技术而不是预算,所以早期是清一色的 IOE(IBM 大型机 +Oracle 数据库 +EMC 存储),优点是可靠性非常高,但扩展性差,而且非常昂贵。所以我们极少听说什么银行储户的账户里的钱算错了,如果真的有,即使是 1 块钱也是报纸的头条。

而分布式系统的特点是因为分布在广阔的集群中,设备规模远大于集中式,从概率上说出小错的概率要高于集中式,但因为通过分布式架构稀释了风险,所以具有系统韧性好、成本低、可扩展性强的特点。某种程度上,其弥补错误的成本也很低。随着时代的进步,越来越多的企业开始放心的使用分布式系统,例如,中国排行前十的银行中至少有 7 家采用了腾讯云分布式数据库系统。

分布式系统有突出的优点,例如银行的系统虽然固若金汤,但一旦出现不可抗力(比如地震),那单点的数据中心就会团灭;而一个分布式系统哪怕有 20% 的机器歇菜,大部分数据仍可从其它备份点中得以保全。

这两条道路原本代表着截然不同的需求和适用于不同的场景,但一个现实的压力要求它们必须交汇——那就是随着中国的互联网公司越来越深入的走入产业互联网领域,其云计算、云数据库的客户也必将从互联网企业变成银行等大型政企机构,这就给腾讯数据库团队提出了一个难题——必须证明你们基于分布式路线发展出来的云数据库,能够达到一向走高精尖的集中式路线的金融业的要求。

我想,这才是数据库团队参加 TPC-C 这个 " 商业数据库领域的奥林匹克 " 的终极原因,他们必须证明自己虽然没有天生的金融基因,但自研的数据库干得了金融业的活。

从另一个角度看过来,腾讯数据库总经理王义成对推动这次打榜也很有信心,因为它经过多年的实际业务打磨,王义成如数家珍的告诉笔者——财付通、Q 币、腾讯音乐、腾讯会议都是 TDSQL 的磨刀石,他甚至不乏幽默的说:" 其实你的钱很可能就在我们的数据库里,因为我们还支持了微众银行、微信支付……可以说整个腾讯生态的经济系统都运行在 TDSQL 上,所以我们有充足的信心和经验。"

打榜开始了。

在近 50 天的前期准备中,他们其实是为 4 个核心测试在做准备,而其中最难的就是第一项—— 8 小时全压力测试。

我们知道,计算机系统在进行特定优化的时候,可以达到一个很高的峰值——类似开车的时候把油门踩到底,但这个时间只能持续很短,否则汽车就会爆缸。

而 TPC-C 的挑战就在于,要求整个 8 小时过程中间一直保持高负载,并且在这种数据量不断往里面增加的情况下,要求系统能跑到整个 8 个小时内的极限 tpmC(每分钟最高的处理事务),但同时又要求这个最高值跟每分钟最低的值的差不能超过 2%,也就是波动率要小。

这就相当于电影《生死时速》里的场景——不管道路如何,汽车只能开快不能开慢,只要慢一点,炸弹就会爆炸,8 小时油门一直要踩到底。

而在实测的那一天,当整个系统飙升到每分钟 8 亿次以上时,视频会议接通了,大洋彼岸的审计员提了一个苛刻的要求,立刻拔掉服务器列表上随机的几台服务器的电源……而且这一切要发生在审计员的眼皮底下。

一个项目组的同事举着手机走进机房,在实时的视频下拔掉了服务器的电源……这一刻,考验的是服务器容灾切换的能力……如果说前面的测试是驾驶着装了炸弹的汽车,那此刻考验的就是——不但炸弹不能爆,还要在开着车的状态下换轮子。

数据库团队紧张地盯着现场,TPC-C 规范要求的是 30 秒内必须恢复。事实上,只要 18 秒钟,系统将继续恢复到 8.14 亿次 / 分钟的水准。

最后,数据定格在 8.14 亿次 tpmC,这个数据可以理解为—— 14 亿中国人中的六成人,从早上 8 点起开始,以每分钟下一个订单的速度给腾讯数据库下单,而且一直下单持续到 17 点下班,中间还经历了两次随机物理机器断电和一次腾讯云实例的故障模拟,最终波动率为 0.2%,仅为要求的十分之一——这也说明了,腾讯自研的分布式架构的 TDSQL 数据库,在稳定性上甚至超过了基于集中式系统制定的测试基准,这将成为分布式云数据库发展史上的一个里程碑;而最终 4 万亿次的结果则意味着,他们在一个现实中从未达到的高度上完成了测试。

同时,每次的处理成本仅折合 1.27 元人民币,是上一次打榜企业 3.98 元的三分之一。这就意味着,腾讯用对手三分之一的单位成本,就扛住了更大规模的并发,这是 TPC 创立以来的最高纪录,也是目前的世界纪录。

" 我们认为,做国产数据库不仅要坚持长期投入,而且不能闭门造车,发展到一定阶段后,必须要去打一次榜。不但能够提前发现问题,攻克很多未来可能遇到的技术难题,也是对产品能力更全面的验证 ",腾讯副总裁蒋杰在采访中表示。

3、一切都已发生过 / 拿产品去说话

"50 多天了,我们连去洗手间都是跑着去的。这不是因为我们的产品不成熟,而是规范和测试及审计太复杂。但我知道,再过一天,无论发生什么,短期内我们都不会有再来一次的机会 ",TDSQL 专家工程师雷海林说:" 但我们是有信心的,因为我们的数据库早就经过无数次的真实场景的测试。"

说起来很轻松,但腾讯的数据库被接纳,还真是千辛万苦。

TDSQL 的第一个客户是微众银行,但尽管如此,在和银行的首席信息官谈了两个小时之后,还是谈崩了……

和很多技术高手一样,潘安群是一个坚定的分布式架构的信仰者,他时刻都在讲分布式的好处和缺点,但他也承认,行业接受这种理念需要时间。

" 和 TPC 的人沟通时,我们一听就知道他们是传统金融业的那种集中式的思路,但这时候我们能说什么?能去跟他说分布式的优势并且说服他?",潘安群说:" 这时候我们能用来沟通的,只有我们的产品。我们的产品以分布式的架构做到了集中式的稳定性、可靠性,对方自然就认可我们了。"

和微众银行的沟通当然没有这么紧迫,但双方仍然有一些理念差异。对方说不能把所有的服务器放到一个集群里,潘安群说放到集群里就已经是把风险分散了,而对方坚持要拆更多的小集群,这边则说更多的小集群使得业务层面的协同要跨群进行,从技术角度来说增加了保障的难度……

但是,回来后静思慢想,潘安群又承认用户的需求是客观存在的," 不能把鸡蛋放在一个篮子里 " 其实已经是双方的共识,而 " 一个集群 " 和 " 拆成小集群 " 发生冲突,是做惯了分布式的技术人员的本能和直觉在抗拒,但其实从技术层面是可以想法设法做到的。

" 最后,我们得承认是微众银行教育了我们,也就是真实的银行客户的想法教育了我们 ",潘安群说:" 后来的事实证明,根据需求去做开发才是更大的优势,我们拿着这种新形态的产品在金融市场走的很顺利,这也说明,不能总是唯技术论,还是要以腾讯擅长的产品思维来考虑问题,能满足需求的产品就是好产品 "。

不过,尽管如此,除了微众银行之外,当时没有任何一家银行敢于接受分布式云数据库,他们寻寻觅觅,走过了无数城市和银行。最后,一家地方性农商银行站了出来——张家港农商行。

在迁移之前,张家港行使用的是 Sybase 数据库,从业务系统到数据库的整体架构大概还是十多年前的架构,尤其是在高峰时段,数据库的吞吐量低,机器负载高,业务响应缓慢。

应该说,张家港行是一个很有勇气的银行,虽然从来没有用过国产的分布式数据库,但还是在外围系统——水电缴费的一个子系统里,试用了 TDSQL,发现效果十分惊艳后,就开始考虑把核心系统切换到国产数据库上。

事实上,张家港农商行的确是勇于探索的,但他们也不乏谨慎,在采用 TDSQL 的同时,还进行了 " 内部赛马 ",同样上马了另一套数据库系统。并对腾讯的技术人员坦言——以一年为期,一年之后对两个系统的稳定性、性能进行对比测试,根据测试结果再决定使用哪套。

虽然是地方农商行,但迁移的数据仍然达到了 TB 级,包括了账户、账目、流水、账单、日志等数据,而且新的系统也十分复杂,有近百种数据结构,这就对迁移提出了很高的要求。

但更难的是核心替换,王义成认为,TDSQL 之所以能实实在在的拿下客户,是因为已经形成了一套整个去 Oracle 的解决方案," 从对 Oracle 的兼容,然后到 Oracle 语法的改写,最后做到给客户承诺迁移后不能有性能损失,都是一路上的难关和挑战,但也是我们致胜的关键,或者说是国产化替换的解决方案的灵魂就是——不但可以替换,还可以更好。"

可以打个比方说,核心系统是银行业务系统的心脏,而核心系统的数据库就是心脏中的心脏,针对核心系统的数据库进行改造的难度无异于做一次心脏更换手术,而没有人愿意平白无故去接受一次换心手术。

但现实中,有太多的银行需要做一次换心手术了。

一方面,中国经济高速发展,银行业务也日益互联网化,这都使得原有的系统性能出现了瓶颈,而且这是普遍现象,而不是个别现象。而按照行业惯例,银行这种重大系统的迁移,都是不到万不得已尽量不做,而现在大行、小行由于业务发展的需要,需要做 " 换心手术 " 的都已经成了刚需;

另一方面,以前国内银行没有选择,只能用 Oracle、微软等公司的产品,这些产品性能高但成本更高,扩展性差、也很难解耦——这就使得绝大多数银行不得不代代沿用这几家的产品,因为根本就没有选择,属于独门生意。

但张家港农商银行的实践最终证明,一年之内,使用了 TDSQL 的核心系统,在高业务量的情况下,系统负载也基本不超过 10%,可谓轻松胜任,总体成本则降低了 75%,对于大量新业务支持良好……而那套本用来 " 赛马 " 的系统,则自动降格成为了灾备系统,中国国内银行第一次完整的将核心系统迁移到国产分布式数据库上的实践成功了,张家港农商行也注定被写入中国银行史上的一页。

张家港农商行只是一个起点。此后的三年内,腾讯云数据库 TDSQL 开始在国有大行、城商行、券商、保险等赛道陆续开展核心系统的国产化替换。据了解,腾讯云 TDSQL 服务的金融核心系统客户超过 20 家,随后进入规模化复制阶段。

腾讯云副总裁胡利明认为," 数据库的国产化替换,是目前金融机构与科技公司一定要打赢的攻坚战。在这场攻坚战中,我们不仅要重视研发投入,在加快产品与新兴技术融合的同时,也要不断提高专业化服务水平,为这场长周期的拉锯战做好充分的准备。"

而随着第一个银行核心系统替换的真实案例出现,TDSQL 吸引了更大的银行机构的关注。这是一家国有大行,国产数据库替换是行内重要的数字化基建项目。其中,自主可控成为核心系统的关键指标。

可以说,作为连续 30 多次入选世界 500 强的特大型银行,该国有大行如果采用了分布式技术平台,并实现了以此为新核心应用提供了从架构设计、开发、系统运行到运维等全生命周期支持,以其体量来说,将是数据库发展史上的世界级事件。

而且,这次的应用并非仅仅 TDSQL,而是除了采用 TDSQL 承载新核心业务和交易数据,实现关键数据库领域的自主可控之外,在缓存上、在高可靠消息系统上、在微服务平台乃至大数据基础存算平台和数据全生命周期工具上,都将使用腾讯云原生 + 大数据 + 云数据库的全家桶。

而经过两年的努力,该行客户信息一次性下移至依托腾讯云等国产厂商核心技术自主打造的分布式平台上。这是国有大行领域首次实现通过基于自主可控基础软硬件构建的技术平台承载核心业务流量,也是 TDSQL 的另一个里程碑事件。

而在保险行业,阳光保险的办公 OA 系统全栈国产化替代工程中,为满足系统性能要求,项目组采用了腾讯 TDSQL 分布式数据库,并在 1 个月内完成应用适配上线。上线后,生产环境更新表结构效率提升了 50%,同时数据库扩展性得到提升,该应用案例在保险行业亦属首创。

不得不说,腾讯数据库在短短几年内的商业化落地,证明了目前国内金融行业的需求是广泛而迫切的,而腾讯也有自己的独特优势。

从微观层面,国产数据库的性价比非常高,而且基于云原生、可组装等理念,既可以帮助银行降本增效,有利于低成本开展创新业务,这是产品、技术层面的利好。

而在宏观层面,数据库作为核心基础软件之一,在过去几十年中,被国外长期垄断,这就带来了极高的技术成本和潜在的企业安全风险。且传统集中式技术架构,在云时代高并发、大数据、融合计算等领域场景下的边界和局限一定程度上给企业业务创新带来了制约。

特别是近来地缘政治和国际关系动荡,使得技术供应链的断供风险增大,国内银行有更强大的动力去换一颗纯正的 " 中国心 "。

结语:

在笔者写作此文时,国内排行前十的银行已经有 7 家采用了 TDSQL 的产品,

TDSQL 已服务腾讯内部和腾讯云上数千家金融、政务、社交、电商、交通、游戏等行业客户。

这意味着,在国产化大趋势下,金融机构科技创新、政务数字化转型面临挑战,对国产数据库发展提出了新要求,而腾讯较好的承接了这些需求。特别是中国数据库市场面临数据库上云与国产化的双重驱动,而腾讯又同时具备这两种能力。

但我们并不能过于乐观。

在访谈中,笔者认为国产数据库还面临三大挑战。

首先,是产品丰富性、体系性上的差距,客观存在。

TDSQL 成功打榜 TPC,证明了国产数据库的核心性能已经达到世界水平,但就像人们选购汽车一样,最高时速或者零百加速从来都不是第一指标,而还要考虑功能性、舒适性、经济性等方方面面的考量,而国际企业由于创立时间长、服务客户多,在体系性、产品丰富度上优势明显。

王义成则告诉笔者,目前 TDSQL 已经研发出了五种赋能方式,包括公有云、私有云、一体机、软件部署加内核输出,足以满足不同客户的差异化极大的需求。

其次,是服务能力、服务水平、ISV 生态上的区别。

IOE 为代表的国际企业在过去 20 多年甚至更长的时间里,一直是大中型政企用户的首选,服务体系、培训体系、存量人才十分发达。这就好比国产的新能源车,维修网点很不发达;而开合资品牌的车,到哪里都可以找到修车、换件的地方,而且这种优势还将维系较长的时间。

最后,换心是趋势,但打造好用的心仍然任重道远。

我们必须承认,部分对于高性能有强刚需的客户还将长期依赖国际品牌,而国产数据库特别是云数据库赛道的参与者,也是越来越多。腾讯应该抓住宝贵的时间窗口期,对用户的心智发起饱和攻击,建立起国产数据库的美誉度和品牌势能,让用户从 " 敢选 " 变成 " 想选 " 和 " 指名要选 "。

值得乐观的是,人们对数字化、智能化能力的需求,是一条单行道。目前,在金融领域、政务领域等大门类中,对数据的存储、处理、挖掘都有更强的需求,而当前信息科技工具应用普遍需要较高门槛,市场亟需更多符合中国特色、满足中国用户特色需求的信创产品。

这决定了在当下,历史机遇是站在国产云数据库这一边的,我们要因 " 势 " 取利,与历史性的需求相向而行。

0 阅读:9

胡说成理

简介:关于智能时代和智能时代的生意逻辑的小天地。