云原生数据库!到底是什么?
云原生成为数据库发展的主流技术趋势。问题是,什么是云原生数据库,不同企业有不同版本解读。
阿里云认为,云原生已经过了IT基础设施及应用场景云化的1.0时代,不再只强调单品能力是否容器化,或者是否通过微服务、Serverless等新技术构建;现在,云原生数据库已进入 2.0时代,更强调一个能集成多种引擎的全面数据库解决方案。说白了,有了云原生,底层的每个分区都可以充分享受云带来的弹性和高可用能力。但同时,云原生并非孤立存在,而是与分布式、在离线一体化、库仓一体、多模数据处理等核心技术相互融合,让数据在不同应用场景和系统之间自由流转,进而实现一站式全链路数据管理与服务。
腾讯云则认为,云原生数据库强调的是极致的性能、弹性和无限扩展能力。比如:用户不仅可以在云上搭建自己的数据库,还能在全面云化的基础设施环境中,按照使用情况进行更细粒度的计费。
而华为云,更看重上层的应用和架构是否基于云的方式进行改造。换言之,除了资源池化,你的业务是否“生于云、长于云”,决定了你是否能充分享受到云原生数据库带来的极致体验。
如此一来,云原生数据库好像各有千秋,但对于用户而言,依然是一知半解。其实,要想真正了解云原生数据库的概念和内涵,要从用户的应用场景变化开始梳理。
充分利用云上能力
过去,软件开发和应用是单体式,要想拥有更强大性能,只有一个选择,那就是在底层购买更大内核的服务器。性能虽然上去了,但价格不菲,很多银行用户都知道,大机的价格很贵。
终于有一天,互联网时代来临,我们可以以更合理的方式,解决性能和成本的问题,这便是最早期的云服务模式,也就是云数据库时代。(注意:云数据库不同于云原生,更多内容可以参考《云原生数据库大红大紫背后,透漏出哪些关键点?》)。包括现在,很多企业上云的模式,依然是软件不动,直接把本地架构搬上云,相当于是把硬件资源进行了池化。
实际上,云带来的核心价值,远不止于硬件堆砌起来的存储层面上的共享,而是上层应用上的分布式能力的破解。云,天然是分布式结构,基于云的弹性设计数据库应用,意味着数据库的结构不再像从前那种集中式架构,要靠单体计算能力的强劲,来决定最终的性能。
现在,我们可以通过很便宜的硬件,实现更高的性能。比如:银行业务,很多应用场景都有计算能力要求,而靠硬件堆砌的单体模式,明显存在瓶颈。再比如:双十一场景,云计算可以解决大机解决不了的问题,突破了硬件计算能力理论上的桎梏,这些都是云数据库带来的改变。云数据和云原生数据库,一脉相承。(关于什么是云数据库,可参考笔者之前总结的文章《云数据库选型也绕不开“CAP定理”?》)
那么,云原生带来的改变是什么?答案是,架构上的根本改变,云原生让数据库实现真正意义上的横向扩展!
算力解耦、数据可以大量解析,包括大数据的蓬勃发展,都是云架构带来的改变。但如果你只是把数据库搬到云上,只能算是应用到硬件红利,业务层面依然受过去瓶颈制约。所以,最佳业务模式是,从业务架构上进行云原生化改造。
适用于对时效性要求较高的业务
问题是,都在谈云原生,不同云原生数据库有哪些区别呢?
放眼望去,拥抱云原生数据库的路径有两个。一类是直接使用公有云厂商提供的产品和服务;另一类是以公有云的架构和做法做自己的私有云。
理论上讲,只有公有云才具备云原生数据库能力,因为云原生是有成本的,只有最大化共享,才能分摊公共成本。尤其是业务规模到达百万级、千万级规模的时候,没有云原生的体系和架构,根本支撑不住。
只是,在数字化转型背景下,只用一款或者几款由公有云支撑的云原生数据库,支撑千行百业的各个细分场景,从哲学角度看,这是理想状态,根本不可能实现。所以,不同公有云之间出现了技术上的差异,采用不同的产品组合,解决各类场景细分的问题。
另外,对于规模不太大,或者自身业务规模很大、其业属性不太适用于阿里、腾讯、华为的企业,则在本地尽量以公有云的方式,拥抱云原生数据库技术路线。
比如:国内某大型银行科技公司,既搭建了公有云,也有自己的私有云。数据库服务,目前主要对内提供服务,企业可以在云上直接部署Redis、PostgreSQL等。其中,TiDB的底层,已经实现容器化部署。
相对于本地业务模式,云原生数据库可以带来更强大的扩缩容能力。对于大多数金融业务而言,增量相对稳定,比较容易预测云上资源容量。云原生数据库更偏向于互联网那种高并发业务场景,对于实效性要求比较高,云原生带来的好处是,可以把权限交给用户,自动化程度比较高,用户可以自己按需选择,不需要找专业的DBA帮忙。
对于大多数用户而言,可以把类似于EBS、块存储等技术封装成业务能力,加入企业自己的甬道,这便是云原生数据库最佳范式。当然,最终结果肯定和公有云的云原生能力没法比;但这就是企业应用现状,不同企业对数据合规及应用场景,都有不同需求。