阿里云PolarDB:引领云原生数据库创新发展
内容介绍:
一、PolarDB的简介以及发展
二、PolarDB在游戏行业的落地情况
在2024云栖大会中,本次分享的主题是介绍PolarDB过去一年最重要的发展以及PolarDB在游戏行业的落地情况。
本次课程将围绕两个方面展开。
首先,介绍PolarDB以及它的发展;然后再介绍PolarDB在游戏行业(Funplus公司)的落地情况,包括游戏运维职能演进、云原生能力对游戏业务发展的推动作用以及对未来的展望。
一、PolarDB的简介以及发展
1. PolarDB简介:
(1)Alibaba PolarDB
PolarDB现在可能是全国最大的云数据公司,其在线上有1万多个企业用户,他们在线上每天有100万盒在为这1万多个企业用户服务,并且全世界有80多个站点,全球部署很多数据库,所以这基本上可以说是全国最大的自研云数据库。PolarDB是以乐高的方式在做云数据库,因为云数据库是在云上部署的,充分利用资源磁化和弹性的能力,包括存储、内存和计算,我们都可以自由的搭配,客户需要什么样的场景,需要多大的数据库,我们都可以把它搭配出来。并且我们还有不同的计算节点,不光有读写节点,还有只读节点,也有分期节点,也有今年开始有的AI节点,为此我们可以加个AI节点,对PolarDB存的数据做一些分析、推理,这些都是可以的。所以这是一个非常适合云上部署的数据库,是专门为云来设计的。能做这些,一方面是因为硬件条件,另一方面更重要的是PolarStore存储,所以今天有必要介绍一下PolarStore。PolarStore今年又做了一个升级,我们称之为DeepSea,因为它有非常深的厚度,不光能承载100T的数据,我们这次会再升级,使其能承载1PB的数据。
(2)PolarStore
这是PolarStore内部的监控图,数据进来以后,全部会到分布式的存储上,每一部分都会有三副本,三副本会打到不同的机器上,所以PolarDB每天都有物理机损坏,在云数据库,如果有几万台物理机一直在跑的时候,每天都会有物理机的损坏,但是从来没有一个用户会感知到,可能会有一些小的抖动,但是抖动也是毫秒级别的,因为我们有三副本,并且三副本换了一个副本或换了一个物理机,这都是没有关系的,你的数据都是打散在不同的物理机上的,所以调度可以做的非常自由。
①PolarStore DeepSea:弹性缓存加速器(ECA)
今年在Store上又推出了弹性缓存加速器,因为在Store的物理机上有很多内存,这个有点像存储的Page Cache,但是材质不太一样,也是跟软硬结合的,能做Page Cache之后,写的能力和读的能力都得到很大提升,已经非常接近本地盘,跟云盘有非常大的提升,其中读可以达到25微秒,写可以达到30微秒。
弹性缓存加速器:AliSCM软硬协同演进
之所以能做缓存层,不是简单是一个内存,它还是持久性的,叫AliSCM,这也是我们和AI联合研发的一个系统,有点像Intel的Persistent Memory,不光能做低延迟,兼容CXL,它还是能够做持久化的。通过这一套系统,我们能做到这么好的优化性能。
②PolarStore DeepSea:弹性存储池容量再升级
刚才说了PolarStore DeepSea会做升级,我们之前可以做100T,但是过了这么多年,100T也不是一个很大的存储量了,我们现在可以支持PB级的存储,所以PB级的数据都可以放到PolarStore上面。和PolarStore配合的还有一个文件系统,叫PFS,能够支持千万级的文件,在PV级上能做秒级的快照,每一份有三副本,一个机房有三副本,我们同时在另一个机房也布个三副本,所以一共是六副本。
③PolarStore DeepSea极致压缩比:SmartSSD-3.0软硬协同演进
不光有AliSCM,我们还有压缩能力有SmartSSD,通过硬件压缩做压缩,同时我们也做了个软件压缩,所以我们是软硬结合的压缩,但对性能没有任何影响,而且这个压缩软件和硬件可以做叠加。SmartSSD上有个卡,不光可以做压缩,还可以做加密,可以支持租户级的加密。
④PolarStore DeepSea无感调度:智能大脑PolarMaster
PolarStore还有调度能力,每个盘用的数据量太多了,用的压力太大了,我们可以把它做自由的调度,因为它是三副本,一个副本的调度你们是没有感知的,不断的在后面做压力的平衡、平均,所以把all的压力可以打散到不同的节点上,这也是为什么PolarDB、PolarStore可以支持这么高的IOPS。
这张图比较重要,是性能对比,最左边是本地盘,本地盘在低压力下的延迟还是比较低的,但是压力变大之后延迟还是比较高的。最右边是PolarStore 的DeepSea,它的性能非常接近本地盘,当中这个黄的是云盘,云盘的Latency相对于PolarStore的Latency都是好几倍的延迟,云盘的延迟相对于PolarStore是非常高的,PolarDB有这么好的性能,也是归功于PolarStore的存储能力。
2.下面是PolarDB今年的一些其他进展
基于分布式共享内存池的多写技术
第一个是多写技术,有一篇论文在数据库的三大顶会SIGMOD是最佳论文,也是中国第一个得到这个奖项的论文,我们相对于AWS有非常大的提升。可以看看这篇论文里的几张图,搜索2024年SIGMOD best paper就会有关于多写能力详细的介绍。
PolarDB Always On
(1)PolarDB的高可用能力
为什么要做多写,不光要做写的扩展,还要在云数据上做很多运维,有可能影响数据库的availability可用性,SLA我们是4个9,现在做一些轮动的升级,这样可以进一步提升不间断的轮动升级。这是一个动画,有RW1、RW2两个节点,我们要升级一个节点,比方说我们要升级RW1,我们把流量先都打到RW2上去,把它升配一下,然后我们把RW1升级,再把流量打回来,同时也把它升配一下,比如说从四核升8C,把流量承接起来,然后再升级RW2,这也是我们为什么要做多写的原因,多写不光是能做写扩展,我们能帮你做无间断的轮动升级,还有无间断的弹性,跨机的情况下,不会有任何间断,数据库总是能承接流量。
(2)PolarDB多级容灾
PolarDB有各种各样的容灾能力,不光是在一个机房,还有跨机房的能力,还有跨地域的能力,所以PolarDB有相当多的容灾能力。之前新加坡机房的火灾,PolarDB在第一时间决定切换了以后,差不多在半个小时所有实例全部切换到别的机房了,所以新加坡机房的PolarDB客户没有受影响。很多客户是在新闻上看到了新加坡火灾了,然后他来查,他的实例已经切换到别的机房了,这是我们的容灾能力,相当多的容灾能力。
PolarDB多层次容灾方案
然后这也是我们一排各种各样的容灾方案,比较重要的是PolarDB也开始支持多云的容灾,不光是在阿里云上的容灾,有的客户需要在华为云上PolarDB,我们也是开始逐渐支持的,这是一个重点,不光是刚才说的各种各样的容灾,也开始支持多云的容灾。
(3)PolarDB Serveless能力
今年也做了一个非常好的Serveless能力弹性能力,大量的PolarDB客户开始使用弹性能力。一个典型客户是碧桂园,碧桂园是白天做业务,晚上是休息的,之前为了整个业务的高峰,它有24个实例都是满配的,现在改到PolarDB以后,到晚上可以跌到一核,用不到16核的,白天可以又弹回去,这是一个相当好的例子。现在差不多也有上千个用户在用Serveless,来降低它的成本。
(4)PolarDB SQL查询能力升级
①PolarDB分布式SQL引擎:全路径优化
PolarDB默默地在做SQL查询能力的优化,PolarDB不光是在做架构的演进,它在优化器、执行器上做很多的优化,不光是统计信息、查询变换还有行内混查这些方面,都做了相当多的优化,后面需要的话,会有更详细的白皮书给大家。
②PolarDB HTAP
去年引进HTAP,HTAP对我们来说有两种形态,一种是多节点并行的查询,用户不用做任何事情,我们能够不光是单节点做并行查询,多节点也可以做并行查询。
③IMCI:Parallel In-Memory Column Index
还有之前说的列存的引擎,它和去年的区别是去年是单节点列存引擎,今年我们有多节点的列存引擎,它可以支持到将近2000核的并行查询。这是列存引擎的演进。
④PolarDB 多引擎冷热分离
PolarDB:多引擎支持
不光是列存引擎,下面存储引擎还有不同的引擎。包括类似LSM的X引擎,还有OSS的引擎,它们自己有不同的特点,X-Engine能够支持大宽表,OSS是低成本,这也是我们的一个优点。
PolarDB 多引擎冷热分离管理
所以通过这个多引擎我们可以做冷热管理,包括冷的数据可以放到OSS上节省用户的成本。
(5)PolarDB Oracle
PolarDB Oracle语法兼容版
PolarDB能够做Oracle兼容,是全兼容的,可以做到语义的兼容,做到99.5%,整个有一个流程来做Oracle的迁移,包括在去O的场景下,能做各种各样完全成熟的流程。从评估到实施到部署,我们可以把老的系统Oracle迁移到PolarDB上来。
客户案例:【壳牌石油】Azure Oracle迁移至PolarDB
壳牌石油是我们的一个典型案例。壳牌石油是一个外企,付了很多钱让Oracle能够顺利的迁移到PolarDB上,之前在微软云上。
(6)PolarDB AI
PolarDB4AI:In-DB MLOps
PolarDB也支持AI,PolarDB在AI也有场景在做,包括把数据训练成模型,叫做MLOps。可以做数据的清晰、训练,训练出一个模型,同时进行模型部署,这是一整套的。
(7)PolarDB:从数据管理走向数据智能基础设施
游戏场景可以根据用户使用的情况,包括造兵的快慢、造兵的频率,AI会有一个模型推出结论——用户是否会继续使用游戏。结论是会继续使用的会给客户一个提醒,是不是需要发一些推荐,这是PolarDB在AI方面的一个实践。
(8)PolarDB全密态
全密态数据库能力(含动态脱敏)
PolarDB还有一个全密态的引擎,我们在做国际化,数据全加密的能力是非常重要的。去年已经推出全密态能力,今年有一个动态脱敏的增强,哪些数据用户可以看,DB可以看的,用户的app可以看的,我们可以小剂量的控制。
PolarDB全密态引擎
全密态引擎可以把你的数据全部进行加密,不光是我们看不到,用户的运维人员也看不到,这让用户非常放松的使用PolarDB。
二、PolarDB在游戏行业的落地情况
游戏全生命周期上云方法论
1.Funplus简介
Funplus是一家游戏公司,中文名字是趣加游戏。因为Funplus总部是在瑞士,这么多年一直没有参加国内游戏出海的排行榜,所以大家对某些游戏还不是太了解。Funplus一直坚持自研自发,从2010年成立,发行过很多成功过的游戏,包括《阿瓦隆之王》、《火器文明》、SS以及去年刚发的MO。曾经单卡游戏突破过9000万美金的流水,在SRE领域比较成功。上周在国内刚发行一款游戏,叫《归龙潮》,现在各项数据表现还是不错的,大家可以试玩一下。Funplus坚持的是长线运营,刚才提到这么多游戏,最长的一款游戏已经进行到第八年,Funplus有很成熟的研发团队、运营团队以及发行团队,还有多款游戏在研发,未来一两年会进行公测。
关于演讲者:是2012年加入Funplus,参与组建运维团队以及游戏运维所有的基建工作,负责游戏的线上运维。加入时Funplus不足70人,现在已经发展到2000多人,在13年的Funplus职业生涯中,几乎参与Funplus所有的游戏运维工作,是运维届的老兵。公司从70人发展到2000人,但运维团队一直保持在8人以下,这是因为有各家云厂商的帮忙。因为有云厂商的帮忙,能够把运维团队控制在一个比较小的规模。
2.游戏运维职能演进
(1)运维团队的职责和价值
①稳定:业务稳定永远是第一位
对于运维来说,稳定是压倒一切的,辛苦一年把SLA做到4个9,如果有一个小小的故障,积攒一年的信用就会被消耗干净, 所有做基础设施的公司和团队都面临这样的压力。关于业务部门大家记住的永远是已发生的故障,但是达到99.99%的SLA却被认为是理所当然的。如何能做到99.99%的SLA?需要三个方面:
第一个是选择合适的、稳定的云厂商,比如说阿里云。第二需要建立完善的响应机制。难免出现问题,在出现问题的时候,我们在第一时间要把问题解决。第三这是一个长期的工作,需要不断对网络优化,对业务进行了解。
②效率:利用工具,提升项目和团队运转的效率
第二个职责是在稳定之后开始考虑效率。首先需要将业务尽可能做到标准化,游戏上了规模,如果没有做标准化,没办法进行批量执行,效率就无法提升。我们如何做到标准化?人要去了解业务,才能提炼出公共的需求,再做出工具,为后面的业务提供服务。
③第三是持续合理的推动成本优化。降本增效,降本排在前面,使用云应该是能够降低成本的。但是如果使用不当,可能会造成极大的浪费,所以需要投入很多精力进行持续的优化,跟踪资源的使用率。
(2)公有云的发展对运维人的影响
使用公有云能让业务达到一个相对稳定的状态,公有云为运维人对运维团队带来了哪些影响改变呢?从2006AWS发布第一个云产品S3,紧接着是EC2的发展,到现在也才过了十几年。这十几年来,云已经非常成熟,刚开始是AWS一家独大,到现在国内的云厂商也开始突飞猛进,甚至很多产品已经超越了AWS。在云之前,一家有点规模的游戏厂商,可能要包括几个组:IDC组、主机系统、网络组、业务运维,包括DBA。现在进入云时代之后,运维团队可以缩减到两个,就是因为有了这些基础设施,我们不再需要关注底层的硬件,只需要把精力更多的放在业务当中,这样就可以了。我们团队现在有两个,一个是运维基建团队,一个是业务运维团队。
3.云原生能力推动游戏业务发展
(1)游戏业务的特性以及对基础设施需求
游戏为什么要上云呢?游戏业务有它自己的特点,首先,游戏是重内容轻资产的,更重要的是,它的业务变化是非常快的,可能需要面向全球用户访问,需要全球部署,如果自己搞RDC,这个事情肯定是搞不定的。还有一点很重要的是,游戏的网络流量是不好预估的,可能会有突发的流量,如果我们用RDC,这方面也很难储备一定的资源来应对洪峰。但如果有了云,这种向上基本上无限的扩展,就可以应对很大的流量。对基础设施有哪些要求呢?有三点:一个是我们需要对全球用户访问提供服务,所以它得能提供全球可用的节点,以及良好网络的支撑。第二由于游戏周期比较短,资源的交互周期就一定要短,最好是即插即用,项目可能随时通知人员要上线测试,过几天就要马上发行,一到上线,要面对的就是流量的突增。所以基础设施一定要有良好的能力。
(2)公有云的发展给游戏业务带来的便利
游戏使用公有云给游戏带来了哪些便利呢?在过去十几年的运维当中,没有遇到太大的运维层面的故障。带来便利首先是良好的高可用能力,它可以快速的恢复,它可能会出故障,但是它能够快速的恢复,在发现问题之前已经进行了切换,这个的前提是我们可以做到多可用区的部署。第二个是要为用户提供良好的体验,需要厂商提供全球可访问的网络体验。然后是灵活的部署能力,这个体现在我们可选用很多不同的元主机规格、数据库规格,在这方面是非常灵活的。第四个我们一直在强调的伸缩能力。下一个就是安全与合规保障,这是大家可能会忽略的,但像我们这群出海的厂商,对这方面的要求是非常严格的。但是有了云厂商给我们做背书,这些东西我们自己可以不用care这些信息。然后是成本收益,因为云是即插即用,我们不需要提前采购大量的硬件资源堆在那里,花费一定的资金,我们只需要按需使用就好。
场景1:公有云带来的效率提升和成本下降
关于如何使用,在我们自己的场景下举两个公有云带来的提升例子:这个场景主要解决的是游戏测试研发的流程,如何做到降本增效。大家都知道,游戏整个上架流程里面,从需求到研发到测试,然后到提审、预言、上线,比较耗时间的一点首先是研发和测试阶段,因为其他的时间我们可能没办法控制,但是研发和测试,之前的流程里可能是串行,一个fisher结束以后会进入另一个fisher的测试,那是否能做到多个fisher并行测试,同时将成本降到最低呢?可能会有方案提供多套研发方案机器来为各个团队提供服务,但这不是一个经济的手段。于是我们自己就做了一个基于阿里云托管k8s的ACK产品做自动化的快速部署,可以做到一分钟把整个环节拉起来,可以一个研发人员负责一个fisher,一个KO人员负责一个fisher的测试,最重要的是用完以后就销毁了,但后台还会用到polar的Serveless能力,把成本能够降到最低。
场景2:业务如何借助云原生能力
我们可以基于阿里云的全站式服务,把所有游戏的整个生命周期从用户的数据进来到最终用户提供所有的运营的这些支持,这些数据可以是不出站的即可以解决所有的业务。从游戏的入口我们可以使用云阿里的RB进来,到后面使用K8S来调度,到数据库使用polar以及缓存层的Tier,来做数据库的缓存以及实体化存储,到运维层面的日志和监控分析能力,我们可以用阿里的SRS服务以及Prometheus,我们对报警、数据分析可以及时的解决问题分析问题。最后是阿里的大数据分析能力,包括ADB以及Polar、Maxcomputer,或者是Hologres这些,它们可以为BR以及DLP提供数据以及丰富的报表。
(3)PolarDB在游戏业务场景下的表现
对于运维来说,数据安全一定是最重要的。业务可能会宕机,可以容忍,但如果数据丢失是不能容忍的。我们是作为用户的角度来讲Polar到底给我们带来了什么,总结了几大特点:兼容性,这个兼容性就是对MyCircle的兼容,无论是自建MyCircle服务,或是AWS传统的OR服务,或者是其他云厂商的AWS,都可以使用DTS能够无缝迁移到我们自己的Polar上来,对所有的业务基本上是无感的。第二是基于良好的框架设计以及强大的硬件支持,可以做到极致的性能提升,这是我们深有体会的。我们可以使用它的Serveless方案,可以做到比较好的弹性,多种备用机制表级别的、控级别的、实力级别的,可以满足对运营、运维的各种需求。最重要的一点是,它可以实现高可用的,单可用区的多副本、多可用区的多副本,或者跨AZ的多副本,如果我们有这些需求的话,它都可以满足。
4.展望云技术的发展对运维的影响
在过去短短十年中,公有云已经取得现在的成就,在AI的加持下,运维、游戏行业可能会受益更多,全面的自动化运维一定会成为常态,数据驱动能够帮助我们深度分析,提前发现问题,帮我们解决问题,这里很重要的一点是,多云管理一定会成为一个趋势,并且对技术人员也会提出要求,因此我们需要对云原生技术有更深入的了解,了解它们才能应用它们。