11月3/4日,以“数实融合,绽放新机”为主题,聚焦产业趋势与技术前沿,打造产业互联网顶级盛会的2021腾讯数字生态大会在武汉举办,腾讯云数据库技术负责人程彬进行了《云原生时代的数据库技术实践》的主题演讲,分别从云原生时代数据库技术何去何从,新时代下如何构建TDSQL-C数据库产品和TDSQL-C在云上实践经验等三个方面进行分享。
当云计算这个词还热度未减时,云原生的时代却已悄然而至,也因此用户使用云的方式发生了极大的变化。从之前用户会把自己的IT架构或业务系统从自建的IDC搬迁到云上,到如今上云的用户不再直接搬迁,而是根据云上的基础设施IaaS或者PaaS的特点,进行自己IT架构的升级或者业务系统的升级。用户的用云方式改变,也对云数据库带来极大的挑战。举个例子,在云上面用户购买虚拟机和部署自己的数据库,而虚拟机提供的可靠的存储副本数本身就是三份,而同时在数据库上层再做架构的冗余,整个数据库存储副本数就会放大很多倍。
这问题要怎么解决呢?我想先简单回顾下数据库技术演进的历程,数据库从技术的角度来讲,它是利用计算、存储、网络的能力对用户的数据进行存储和加工处理,数据库技术的演进也离不开基础设施和数据特征的变化。
所以发展到今天可以划分为4个阶段。
第一阶段(1970s)传统IT时代,以大型机和专用网络为主的商业数据库,用于国防、科研或者大型商业公司,这个阶段,无论计算机场景和用户数都不多,数据量规模也不是很大,但数据价值却非常高,催生出了以Oracle或者IBM为代表的商业级数据库。这个时期的商业级数据库的特点就是贵,但却实现了很大突破:1)实现二维表为代表的数据模型,能够把客观数据放在数据库系统里保存下来;2)出现SQL语言数据库,使得数据库产品得以广泛的应用;3)实现了事务处理能力,让数据库能真正的应用到一些关键的业务场景里,实现数据库存储。
第二阶段(2000s)互联网时代,随着计算机和Intel等技术进一步的发展,数据库全面进入了互联网时代,并催生出了以谷歌为代表的互联网企业。这时,数据库遇到一个新的挑战就是成本,互联网时代用户数据急剧增长带来的成本的挑战,主要体现在软件和硬件设备贵,解决软件成本通过开源共建方式去降低整个软件的成本,针对硬件通过集群和分布式的技术来提高系统可用性和性能,为此以开源和分布式为基础的互联网技术体系就应运而生,同样的,互联网的数据库也是基于这个体系来去构建的。
第三阶段(2010s)云计算时代,随着互联网普及和行业融入,互联网+和移动应用拉起了云计算时代的帷幕。彼时数据库管理规模的增大非常明显,因此引发两大挑战:1)如何让云上数以万计风格各异技术公司都能很好的应用云数据库;2)大规模管理下如何提高管理效率,数据库即服务就应运而生,这个时候,大家都想方设法的通过服务的方式规避在使用上的瓶颈,进而提升整体资源的利用率。
第四阶段(现在)云原生时代,随着数字经济的普及,这时又遇到了全新的问题,这里从腾讯云数据库看出,客户数整体持续增长,客户结构繁盛变化,业务场景也是变化万千,更多的创业企业上云,成本变得更加敏感,同时独角兽或上市公司上云等对数据库的弹性要求越来越高,此外传统线下企业(包括银行、政府等)上云对稳定性要求更高。
基于以上原因,我们重审了现有基于分布式跟开源架构下的数据库,发现它确有的一些先天不足,比如计算、存储资源耦合度极强,导致整个资源利用率偏低,这样也会导致成本偏高;弹性能力受限于资源的紧耦合也做不到极致等;此外,我们还发现云上面的IaaS、PaaS的承受度会变得越来越高。基于种种问题,我们改变思路基于云上面的基础设施,尝试着去研发出一款全新的云原生数据库TDSQL-C,应云而生,依云而建,兼具商用的性能和稳定性和开源灵活和低成本,做到云原生的极致弹性。 图片
首先从架构上,把单体架构升级为更可控的弹性架构。设计理念是把计算层和存储层进行解耦,做分层处理,分层过后通过池化让计算、存储的能力变得无限大,做到极致弹性;同时基于云上IaaS跟PaaS来进行重新设计,复用之前的非常成熟的数据库内核、计算等技术以及EB级规模存储的平台,提高数据库的稳定性。
基于这样的平台,云原生数据库TDSQL-C打造六大核心能力。
图片可计算存储能力,践行log is database设计理念,把计算节点做到无状态。
超大计算/存储力,单个实例可以做到千核级别的计算能力,达到PB级的存储能力。
极致弹性能力,秒级扩展。
自动伸缩能力。
serverless形态和多级存储,降低数据库成本。
一体化服务,简化用户开发门槛,让架构变得简单,在一个数据库里尽量能处理多种场景。
解决计算存储分离的网络洪峰,极致IO卸载。传统共享存储架构,全量IO,逻辑兼容,计算层无需额外适配,但会占用过多网络带宽,计算层消耗额外CPU/内存在存储上,经典BP刷脏问题可能加剧。云原生数据库TDSQL-C使用log is database方案,把一部分数据库计算逻辑下沉到存储层完成, 实现网络数据传输减少90%+,计算层资源更聚焦于SQL处理,提升系统性能,分布式刷脏基本上规避BP刷脏的影响,加快了系统启动速度。
用户核心系统上云,读写压力大,业务吞吐量高;历史账单业务数据量高达PB;移动互联网业务快速增长,日增数据高达TB。TDSQL-C最大支持15个只读节点,物理复制降低主备延迟,页面多版本满足多备机读页面的版本请求。通过修改数据库本身的核心逻辑把数据做分布式的打散,实现千核计算力和PB存储力。 千核计算输出:单实例极致192核15RO读集群,支持千核输出,从容应对高吞吐读业务;
PB存储:扩展表空间管理,可管理海量云存储数据,最大支持单集群PB+存储。
在可用性上,云原生数据库 TDSQL-C改变了通知用户配合升级的传统方式,通过Zero-Downtime Patching能力,把它做到数据库内核里面,实现秒级升级切换。现实业务中存在大量更新后查询的一致性要求,如电商的订单查询、银行转账、余额查询、游戏账户充值、消费记录查询等,TDSQL-C关键技术支持全局一致性、会话一致性、满足业务对读一致性的要求。
云上有许多中长尾客户,一天可能就访问几个小时,怎么进一步降低这一部分开发者的成本呢?通过TDSQL-C Serverless形态,当智能监控发现这个实例已经持续一定时间没有进行任何的处理,数据库会把它的计算资源进行释放,通过采集实际CPU的使用率,打破传统固定规格产品形态:根据负载自动伸缩、按实际使用计费、不使用不计费。要做到这种能力,对技术上的挑战非常大,无论是数据库的计算层还是存储层,都要通过一系列的技术联合才能做到这一点,这是计算上面的优化。
在数据库里面,并不是所有数据库的热度、访问都那么高,有很多数据随着时间的变化,被访问的频度会降低。针对这个情况,TDSQL-C 做了智能存储分层,存储分层除了通常大家做的热数据、温数据、冷数据之外,TDSQL-C在温数据里面还通过了一个新的技术,打破了数据库存储里面通过副本的方式来保证可靠性,可以用更小的数据冗余度和副本,提供同样的可靠性来满足用户的要求,降低存储成本。
越来越多用户,特别是在新型应用上,比如直播带货,也有新的变化,一边在生产订单,同时需要根据订单的情况及时调整线上的折扣的策略,这需要对海量订单进行实时的数据分析。
TDSQL-C提出了HTAP一体解决方案。主要有四个方面的技术。
在存储引擎上,做行列混存,通过列存来加速查询能力。
在优化器上面,把以前面向行的优化器进行优化,让它自适应能够进行分析场景算法的调整。
在执行引擎上,把单一的串行的执行引擎调成分布式的执行引擎,加大数据的查询能力。
在内存计算上,把多个节点技术联合起来做协同,通过NVM拓展内存,TPC—H查询性能相比之前提高50倍的性能。
腾讯云原生数据库TDSQL-C Serverless 实现与微信生态互通,联合微信小程序云开发,创造开发者使用数据库新形态。已为接近50万小程序开发者提供了一站式开发云服务。同时TDSQL-C Serverless也联合Coding DevOps,无服务器函数SCF、轻量级服务器、物联网平台等为企业和开发者提供一键部署多端运行的全套解决方案。
过去18个月中,TDSQL-C实例数增长超过24倍,服务超过6000+外部用户,落地电商、游戏、金融等场景。如团油APP,进行云原生架构升级,支撑单日超2.5亿交易,累计服务车主超4亿;bilibili内容平台,超百万QPS性能,承载人气手游;FiT腾讯金融科技,单日新增TB核心数据,承载腾讯金融科技。云原生数据TDSQL-C同样广泛应用于腾讯内部业务,微信、腾讯视频、腾讯翻译君、财付通等。极致的弹性服务和AI自治服务,助力企业克服传统数据库性能、弹性及稳定性差等问题。
未来,各行各业越来越依赖大数据开展工作,数据量井喷式爆发,大并发业务繁多;5G网络商用落地,新兴产业发展空间无限,面临大规模应用场景挑战。腾讯云原生数据库便捷部署,为用户提供高并发集群计算能力,高速的查询效率,帮助用户缓解业务压力,挖掘数据价值,以低成本享受专业的数据库服务。技术与场景相融合,携手共创更大的商业价值。
本文由博客一文多发平台 OpenWrite 发布!