乐趣区

关于云计算:终于有人把云计算与数据库的关系讲明白了

本文转载自百度开发者核心 https://developer.baidu.com/a…

导读:本文探讨云计算与数据库的关系,包含云数据库本身的技术和特色,也包含云数据库的应用形式和状态变迁。

作者:李海翔
起源:大数据 DT(ID:hzdashuju)

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 函数或者无服务器函数,这些函数再从数据库表中获取数据流,返回利用时数据的格局是固定的。不同云计算厂家有不同的设计方案,但应用的思维是相似的。
点击进入取得更多技术信息~~

退出移动版