Serverless是指构建和运行应用程序无需管理服务器的概念,描述了一种更细粒度的部署和模型,将应用程序打包成多个功能,上传至平台并执行,以响应确切的要求。
Serverless很重要的一点在于无需要关心应用运行的资源,而Serverful需要考虑资源的分配和底层资源的实现;计费方式上,Serverless按照使用情况计费,可以实现毫秒级计费,且快速伸缩无感知。而Serverful为小时级计费,以及弹性伸缩需要较长时间。
Serverless能够带来最极致的弹性,其演进经历了四个阶段:
第一阶段:在自己的机房构建数据库。
第二阶段:PaaS平台的服务,可以购买服务,这也是基本的云端数据库的特征。
第三阶段:云原生数据库,资源的池化能力和弹性能力大幅提升。
第四阶段:无服务数据库,拥有极致的弹性、极致的性价比和极致的无感知。
2020年,全球Serverless服务市场营收400+亿,其中中国 Serverless服务市场营收60+亿,占全球市场的14%,而国内的数据库市场份额占全球5%,说明我国Serverless的市场能力较为优异。
传统数据库的容器架构与 Serverless架构结合,使云原生数据在弹性、自动化方面具有极大的创新价值,Serverless提供了极强的弹性伸缩能力。
Serverless技术中,资源的池化和弹性的扩展紧密相关,首先要实现资源的池化,才能实现极致的弹性。而资源池化最核心的点在于存储资源的池化,存储计算分离以后,在存储层面为上层输出的计算提供了弹性。数据计算池无需做任何牵引,用户的业务数据不受影响。
此前,存储计算互相耦合的时候,存储和计算无法分别扩展,因为数据库是一种特殊的形态,存储层需要规划。因此如果不解耦,则无法分别扩展。
实现池化后,需要对运行的应用和负载进行多维度的监控,包括CPU、内存、连接数等,达至阈值以后自动伸缩,进行资源调度。因此未来Serverless很大的竞争空间在于谁能够提供更高效的资源调度,比如秒级。
为了更多地降低用户成本,提升云上资源的利用率,云原生数据库需要将内存与计算节点进行深度解耦,实现CPU+内存+持久化存储的三层解耦模型。
Serverless的另一关键技术为高可用。
在扩展过程中,单台机器经常出现扩展的瓶颈,需要进行跨服务器、跨硬件扩缩容。而此过程中,业务需要正常运行,因此,高可用至关重要,它包含四个特性:
第一,自动切换能力。当前业界主要有两种解决方案,一是集群各个节点通过一致性协议的去中心化解决方案;二是利用云原生数据库中心化共享存储的分布式锁解决方案。
第二,热备节点。热备节点是一个资源弱化版的RO节点,同时也是一个更接近主节点、随时准备接班的灾备节点。相比普通的只读节点,它保留有限的读服务,预留更多的CPU和内存资源去优化切换速度。
第三,链接保持。对于迁移时的空闲链接,可以引入中间件Proxy,利用Proxy的链接技术保证用户链接不中断。
第四,无损事务续传。对于切换瞬间正在执行的事务,一方面Proxy无法从数据库内核中找回原有事务的上下文,另一方面新主会将未提交的悬挂事务回滚,释放这些事务持有的锁。在该种场景下,链接保持会失效。数据库内核还需提供无损事务续传的能力以解决这一缺陷。
云原生数据库必须提供全局强一致的事务读写能力,才能使事务一致性的RO节点替RW节点透明地分担用户负载。
那么,高性能的能力如何体现?需要将计算层面的算子进行分离,将读写分离,将写操作做成单独的服务,承接大吞吐量的写操作。
另外,引入新的硬件解决性能瓶颈。单一的CPU或者某一种计算芯片擅长处理的任务不一样,因此我们需要新的硬件类型比如GPU、FPGA等来进行优化,使性能进一步提高。
Serverless的低成本体现在除了计算和存储以外的资源,元数据、接入层、负载均衡、优化器等一系列服务也进行池化,使得部署、切换、弹性的过程非常高效快速,降低使用的门槛和成本。
Serverless数据库的应用场景非常丰富。
比如税务系统每年固定时间段的报税会使得应用特别繁忙,而其余时间多为闲置状态,此类可变多负载场景可以通过Serverless技术实现资源的弹性。
双十一期间流量难以预估,此类不可预测的工作负载也特别适合Serverless无感的极致弹性。
大型企业可能有上千个数据库实例,同时感知这些数据库实例资源的使用情况难度极大,因此,可以使用Serverless弹性无感的自动化能力,通过监控实现自动伸缩。
再比如大型软件可能有成千上万的客户在使用,每一个客户都是一个租户,底下又挂了数据库实例,同时管理成千上万个数据库实例是个巨大的挑战,此时也特别适合使用Serverless。
Serverless数据库的发展趋势大多与资源的池化、资源的标准化等相关。比如屏蔽底层的数据库操作,提升易用性,业务人员无需考虑数据库如何部署、如何启动。比如计算资源标准化,统一底层资源。原先自建的机房和服务器会面临很多不一样的问题,而使用了 Serverless云原生数据库以后,即可实现标准化,统一使用,统一调度。
计费方式也更加精确,按需计费,解耦以后计算资源的颗粒度非常小,计算时长从原先的小时或天变为秒级。扩缩容无感,实现更快的业务反应,以及更快的资源调度,实现极致的资源利用率也是未来的发展方向。
数据库引入Serverless技术后,具备智能弹性扩缩容能力,能够随着用户业务的请求数的增加和减少,自动“膨胀”和“缩小”,实现资源的智能“吞吐”。另外,随着资源池化能力的进一步释放,在同一数据中心内,计算、内存和存储资源的三层解耦逐渐从理论走向实际,成为云原生数据库资源管理的新趋势。
我们相信,Serverless白皮书的发布是 Serverless技术前进的起点。也相信阿里这样的企业会沿着这条路径不断前进,不断提供更极致的弹性、极致的性价比和极致的性能。