导读:本文讨论云盘算与数据库的关系,包罗云数据库自身的技术和特征,也包罗云数据库的使用方式和形态变迁。
作者:李海翔
泉源:华章科技
2006年Google的CEO埃里克·施密特初次提出了云盘算(Cloud Computing)的概念。2011年,哥伦比亚大学的Prof.Stolfo教授提出雾盘算(Fog Computing),后被思科公司理论化。云盘算是集中式盘算,埃森哲(Accenture)公司给出了的云盘算定义:第三方提供商通过网络动态提供及配置IT功能(硬件、软件或服务)。
而雾盘算是云盘算概念的延伸,是局域网的分布式盘算方式,符合互联网的“去中央化”特征,其低延时、位置感知、广泛的地理分布、适应移动性的应用特征,使得该盘算范式可支持更多的边缘节点。
2011年,同时出现了边缘盘算(Edge Computing)的概念,OpenStack社区给出的定义为:边缘盘算是为应用开发者和服务提供商在网络的边缘侧提供云服务和IT情况服务,目的是在靠近数据输入或用户的地方提供盘算、存储和网络带宽。
雾盘算和边缘盘算的区别在于,雾盘算具有层次性、网式架构;而边缘盘算依赖于不构成网络的单独节点。雾盘算中的不同节点之间具有广泛的对等互连能力,而边缘盘算是孤岛中运行的节点,这样的节点被容纳入云或雾的网络中可实现流量传输。
云盘算、雾盘算、边缘盘算,是三种不同但又干系的盘算范式,每种范式对于数据库系统而言,都有提出不同需求的可能。如今,云盘算中的云数据库的特征基本探明,但也在发展中。而雾盘算中的雾数据库的特征尚未有提出,边缘盘算中的数据库是否是可从传统的单机数据库系统稍加演化得到,也尚未有提及或讨论。
但是,三种不同的盘算方式,一定适用于不同范例的应用,对于数据的存储、管理、盘算、交换的需求,也必有差异,深入研究不同应用的需求和特点,可得到不同范例的数据库。未来数据库的范例或形态一定会更加丰富多彩。
01 云原生
早在云原生概念出现之前,就出现了Cloud Foundry的概念,其内容可以被概括为一种方法论,称为12要素应用步调(12-Factor App)。根据这12个要素,人们对数据库提出了如下一些详细的要求,使得数据库的架构和功能发生了厘革。
- 12要素应用的任意部署,都应该可以在不进行任何代码改动的情况下完成,将本地MySQL数据库换成第三方服务(例如 Amazon RDS)。与此类似,本地SMTP服务应该也可以和第三方SMTP服务(例如Postmark)互换。这使得云应用研发不深度依赖于数据库系统,使得云数据库之间的功能差异化竞争被消灭。
- 12要素反对与会话具有高黏性。会话中的数据应该保存在诸如Memcached或Redis等带有过期时间的缓存中。这就要求云数据库服务要么有多种产品支持不同能力,要么在一个产品内提供带有过期时间的缓存。
- 12要素应用自己从不思量存储自己的输出流,即不提倡提供日记功能(不写或者管理日记文件),而是把信息直接输出到尺度输出(stdout)事件流。在开发情况中,开发人员可以通过这些数据流,在终端实时看到应用的活动。在应用端不能提供日记以供确认问题,这对服务端的数据库提出了更高的要求:第一数据绝对保持强同等而不存储,第二数据库自身有分析等位问题的能力。但是,不是所有范例的应用都适合进行这方面的设计和实现,大型复杂类应用和网站类应用的定位问题多依赖于日记。
Matt Stine于2017年在一次技术大会的分享中提出“Cloud Foundry与微服务:一种共生关系”的概念,云原生(Cloud Native)的概念正式诞生。他将云原生归纳模块化、可观察、可部署、可测试、可更换、可处理6个特质。
Matt Stine以为:服务的基本原则是有一个清晰的专注点(对应用功能细分的要求)、一个清晰的左券(应用与后台服务之间的接口定义要清晰)、一个清晰的API(应用与后台服务之间的接口在情势上要明确好用)。
云原生通常被以为是一个思想的聚集,包罗了诸多内容:DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷底子办法(Agile Infrastructure)、康威定律(Conways Law)等,以及根据贸易能力对公司进行重组。
这使得云原生的概念全面且复杂,其成为一系列技术、企业管理方法的聚集,其中既包含了技术(微服务、敏捷底子办法),也包含了管理(从DevOps、持续交付、康威定律、重组等层面对技术进行管理)。
云盘算使得传统的应用方式发生了厘革,其自身具有的特点如下。
1. 规模化
IT办法从零散化走向集中化、规模化。大型数据中央被大量建立,作为底子办法向全社会提供集中式服务。
2. 资源池化
IT办法规模化以后,基于弹性服务的要求,需要对硬件资源统一管理。业务规模应可动态瞬时扩缩容,因此要池化硬件资源以提供弹性服务。
云盘算,是盼望通过互联网络为用户提供按需使用的IT资源服务。因此,云服务商要保证在所提供的硬件资源上拥有容量充足的资源池,以保证在并发业务高峰时刻可以满意用户的服务要求,这就是云服务的资源池化。
云数据库作为一种服务,同云盘算相似,其所能管理使用的资源同样需要资源池化。这样用户在使用云数据库的服务时就无须相识云数据库中的现实架构和技术实现了,用户所感知的是其使用的独立完整的数据管理服务和相应的盘算资源。
对于用户而言,资源管理在云数据库内部体现为实现多租户特性,根据租户所租用的资源来提供服务。数据库内部资源池化后,可为用户的应用提供弹性伸缩服务。
3. 服务化
云盘算使得过去IT业所能提供的内容发生了厘革。
- 交付方式从软件交付走向服务交付。用户看似在使用一个软件其实不再是一个软件,一系列软件组合成一个服务后提供给用户,对用户而言一项项详细的服务是可直接感受到的。
- 开发方式从底层(IaaS+PaaS)走向上层(SaaS)。云盘算不仅提供CPU和机架,更多的是提供用户可感受的软件服务(SaaS),或者软件都感受不到,直接感受到的就是服务(Serverless)。
4. 多样化
数据情势及应用场景从单一化走向多样化。服务、微服务等已经各自成型,无服务(Serverless)也作为一种FaaS(Function-as-a-Service)开始为世界的多样性和出色性贡献力量。
02 云数据库
为了应对云应用的研发需求,云上提供服务的数据库系统也相应发生了一些厘革。云原生数据库是指通过云平台进行构建、部署、交付和主动运维的数据库服务。
该服务通常以DBaaS (Database-as-a-Service)的形态,将数据库架构和实现细节隐藏起来,采用多租户和资源有用分发的情势将云资源主动管理起来,为用户提供一个能够满意弹性伸缩、高可用、高可靠、高安全性、强同等等需求,且可以随时随地访问的数据库服务。
该服务具备主动化运维能力(仅需要极少的人力),可提供主动备份和规复、主动性能调优、主动对规模化的数据库集群的资源进行调治等可超越传统DBA所做工作的能力(具备智能数据库的特征)。这种能力使得云数据库系统托管和维护的本钱降低,规模化地进步资源的利用率。
总体来说,云数据库的特征可以概括为解放用户和适应业务两类。详细可以转化为如下6条内容,其中前3条属于解放用户的范畴,后3条属于适应业务的范畴。
1. 智能运维(智能数据库)
故障可自愈,包罗宕机主动迁移、故障隔离、异常流量主动调度、负载平衡、主动限流降级等。数据库可主动调优,主动调治资源的使用,拥有自适应算法以应对应用的负载等。这样的能力可以概括为自调优、自适应、主动驾驶(工业界将主动驾驶的尺度分为6个级别,数据库界借用了此级别来定义数据库主动驾驶的概念)。
2. 易于管理
智能运维的表现就是易于管理。云数据库具备主动化异常分析诊断能力,可在运维操作中实现白屏化、智能化、规模化、少人化。
3. 极致体验
用户对于数据库的申请、创建、监控、报警、故障定位都可以最简朴的方式完成,给用户以极致便捷的体验。
4. 弹性伸缩
能够根据业务的应用负载主动伸缩,具备秒级扩缩容能力,可灵活动态分配或释放资源,结合弹性计费策略,可以大幅度降低用户的使用本钱。这一条中部门内容和智能运维重合,但描述问题的角度不同,本条是从系统可扩展性的角度,对云数据库的重要特征进行描述。
业务或系统上云,是购买了一种应对未来的可能。对于正处于业务发展中的商户而言,随着数据的积累在云端可随时扩展存储,也可自由扩展盘算节点,这样对于一个从小向大发展的商户而言,是一种最佳的资源利用方式,也是一种本钱最低的方式。
而支持这种业务发展的技术,就是弹性伸缩。在弹性伸缩中需要思量事务执行的先后次序,这个次序对于数据库架构而言,就是存算分离。
5. 按需计费
支持按量(如流量、存储量、调用次数、调用时长、核数、内存资源占用量等)制定多种订价策略,使用户可根据业务情况灵活匹配出最优计量模式,节约用户本钱。
6. 安全、资源隔离
云数据库采用共享池化技术来进步盘算、存储、网络等资源的利用率,隔离用户对资源的并发争用;另外提供多租户方式以做到安全隔离,制止信息泄露或遭受攻击等。
上述内容为云数据库的设计指出了方向。
03 Serverless数据库
Serverless是一种无服务器架构,其不是一个详细的编程框架、工具,而是一种软件系统架构思想和方法,其核心思想是让用户无须关注支撑应用服务运行的底层主机,用户可根据应用需要,按需使用底层服务器(硬件以及软件系统),并根据使用量付费。Serverless类应用所需要的盘算资源由底层的云盘算平台动态提供。
云原生数据库作为后台服务,其提供一种数据库服务/访问方式连接用户,该方式便是Serverless方式。但是,Serverless不但是连接数据库的一种服务方式,还是连通其他各类服务的一种方式。Serverless与云数据库都是一种服务能力。云数据库把数据存储、管理、盘算能力转化为服务提供给用户。
具备了Serverless能力的数据库系统,在存储层面要解决无限量的数据存储能力;在盘算层面,要提供弹性盘算的能力;在系统内部的架构方面,要提供监控调度能力,使资源分配可动态进行;对于数据库的各个组件,要有可被池化的能力,即具备主动资源管理的能力;对于用户接入层面,要能响应用户接入的事件请求,根据访问量,利用前述的存储、盘算、管理的底子进行弹性扩缩容以应对应用层的波峰或波谷,按量计费。
假如云数据库具备了无服务器架构的能力并可支持依赖于数据库Serverless类的应用,则该数据库就可称为ServerlessDB。而云数据库在构建Serverless能力时,应具备如下特性。
- 单一职责:该云数据库的业务是独立的,负责的团队是自主的。云数据库负责单一的服务且该服务处于核心领域。该云数据库具有高内聚、低耦合、与其他系统和领域有明确边界的特点。
- 轻量级通信:云数据间的通信应该简朴、轻量,且与语言和平台无关。
- 独立性:该云数据库应是独立开发、独立测试和独立部署的。
图6-1显示了AWS的Aurora的Serverless能力。
▲图6-1 Aurora数据库具备有Serverless的能力
在应用层,情势上Aurora可以通过函数或事件的方式接入服务平台。如AWS的API接口会触发AWS的Lambda函数或者无服务器函数,这些函数再从数据库表中获取数据流,返回应用时数据的格式是固定的。不同云盘算厂家有不同的设计方案, 但使用的思想是类似的。
关于作者:李海翔(网名:那海蓝蓝),腾讯金融云数据库首席研究员,腾讯T14级专家,腾讯TDSQL分布式数据库首席架构师。中国人民大学、北京林业大学特聘硕士导师,CCF数据库专委会委员,DTCC(中国数据库技术大会)专家委员会委员,北京市科技进步一等奖得主。申请和获得授权的专利多达70余项,在VLDB等数据库大会上发表论文若干篇,参与了多个国家863重大专项、核高基、工信部、科技部等的项目。
本文摘编自《分布式数据库原理、架构与实践》,经出书方授权发布。
《分布式数据库原理、架构与实践》
推荐语:腾讯T14级别专家、腾讯金融云数据库首席研究员、腾讯TDSQL首席架构师执笔,从原理、架构、案例三个维度深度剖析分布式数据库。 |