云计算(Cloud Computing)
我们对于云计算的概念,维基百科有以下定义:Cloud computing is a new form of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand.
云计算就是一种按照需求通过Internet获取计算资源的形态。这些计算资源被包装成为服务,提供给用户。而提供这些服务的主体,我们称之为云服务供应商(Cloud Service Provider)。
按照NIST (National Institute of Standards and Technology,美国国家标准和技术研究院)的定义,云服务最主要的有三类:IaaS、PaaS、SaaS。
IaaS(Infrastructure as a service – 基础设施即服务)
IaaS(Infrastructure as a Service),即“基础设施即服务”,一般指云计算所提供的计算、存储、网络等基本底层能力。
用户没有权限管理和访问底层的基础设施,如服务器、交换机、硬盘等,但是有权管理操作系统、存储内容,可以安装管理应用程序,甚至是有权管理网络组件。简单的说用户使用IaaS,有权管理操作系统之上的一切功能。
我们常见的IaaS服务有虚拟机、虚拟网络、以及存储。
IaaS 的本质,是对云数据中心和各类 IT 基础设施的抽象,是基于软件技术对物理硬件进行的封装和虚拟。这为云计算用户屏蔽了大量底层细节,能让我们在较高的层面进行架构设计和资源使用,大大提高了工作效率。
PaaS(Platform as a service – 平台即服务)
PaaS(Platform as a Service),即“平台即服务”,通常指基于云底层能力而构建的面向领域或场景的高层服务,如数据库、应用服务等。
用户无需管理底层的基础设施,包括网络、服务器,操作系统或者存储。他们只能控制部署在基础设施中操作系统上的应用程序,配置应用程序所托管的环境的可配置参数。
常见的PaaS服务有数据库服务、Web应用以及容器服务。
SaaS(Software as a Service – 软件即服务)
SaaS给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。可以通过轻量的客户端接口(诸如web浏览器(例如,基于web的电子邮件))或程序接口从各种客户端设备访问应用程序。 用户无需管理或控制底层云基础架构,包括网络,服务器,操作系统,存储甚至单独的应用程序功能,可能的例外是有限的用户特定应用程序配置设置。
类似的服务有:各类的网盘(Dropbox、百度网盘等),JIRA,GitLab等服务。而这些应用的提供者不仅仅是云服务提供商,还有众多的第三方提供商(ISV: independent software provider)。
例子
这里借用汽车的例子对IaaS、PaaS、SaaS的解释进一步阐述三者的区别。假设你需要出去外出使用交通工具,我们有四种的方案:
On-premise方案:
自己开车,需要维护汽车,是其安全工作。同时需要为车上保险,提供燃料。(服务器 + 操作系统/数据库 + 应用软件)
IaaS:
从租车公司租一辆车,汽车的维修、安检都由租车公司承担。你只需要提供燃料(需要提供操作系统+应用软件)
PaaS:
除了基础设施(汽车),还为你提供司机。类似出租车。只需要提供目的地,汽车的行驶和运行都有司机决定。(只需要提供应用软件)。
SaaS:
类似于做轨道交通, 一切都是由别人控制。只有较少的定制化功能。
目前主流的IaaS、PaaS和SaaS产品如下图所示:
部署模式
除此之外,云计算目前主流的部署模式分为三类:
私有云(Private Cloud / On Premise)
私有云是专为单个组织运营的云基础架构,管理的模式有内部管理,第三方管理,亦或是内部或外部托管。简单的讲,私有云就是通过自建或者租用场地的形式建立服务器机房或者数据中心。服务是面向私有网络或者VPN专有网络。企业拥有对服务器、数据硬盘的完全控制。因此安全性很高。
公有云(Public Cloud)
公有云服务面向公开网络暴露,服务可能也是免费的。由于网络对外公布,因此从安全层面上也是大不相同的。常见的公有云有AWS,Microsoft Azure,阿里云等。
混合云(Hybrid Cloud)
混合云是两个或多个云(私有云,社区云或公共云)的组合,它们保持不同的实体但绑定在一起,提供多个部署模型的好处。 混合云还意味着能够使用云资源连接搭配,托管和/或专用服务。比较常见的例子如数据公司,可能拥有很多数据,而这些数据因为合规性等原因只能放在私有环境,当需要大规模机器学习,对数据进行脱敏后使用公有云进行大规模学习。
IaaS(Infrastructure as a service – 基础设施即服务)
虚拟机类型
一般来讲,云厂商会提供通用均衡型、计算密集型、内存优化型、图形计算型等常见的虚拟机类型。这些类型对应着硬件资源的某种合理配比或针对性强化,方便你在面向不同场景时,选择最合适的那个型号。
而 vCPU 数和内存大小(按 GB 计算)的比例,是决定和区分虚拟机类型的重要指征之一。
通用均衡型的比例通常是 1:4,如 2 核 8G,这是一个经典的搭配,可用于建站、应用服务等各种常见负载,比如作为官网和企业应用程序的后端服务器等。如果你对未来工作负载的特征还没有经验和把握,那你也可以先使用通用型实例,等程序运行一段时间后再根据资源占用情况按需调整。
如果 vCPU 和内存比是 1:2 甚至 1:1,那就是计算密集型的范畴,它可以用于进行科学计算、视频编码、代码编译等计算密集型负载。
比例为 1:8 及以上,一般就会被归入内存优化型了,比如 8 核 64G 的搭配,它在数据库、缓存服务、大数据分析等应用场景较为常见。
图形计算型很好理解,就是带有 GPU 能力的虚拟机,一般用于机器学习和深度学习模型的训练和推理。随着 AI 的火热,这类机器也越来越多地出现在各种研发和生产环境中。
流量分类
区域的流量费用,是你需要注意的。如果把区域作为一个有边界范围的实体圈起来,这个流量可以分为三类:
- 入站流量
- 出站流量
- 内部流量
云解决高可用性
一个区域看上去拥有一个数据中心就足够了,为什么还要建造多个可用区呢?
首要的原因,当然是为了解决区域内高可用性问题,这也正是“可用区”名字的由来。尽管数据中心内部有着非常精密的运作系统和冗余机制,但地震、火灾、雷击等极端情况下,仍有可能造成数据中心级别的故障。
为了避免单个数据中心故障让整个区域不可用,那自然就有必要建设多个相对独立的数据中心,也就是多个可用区了。它能让区域中的服务达到相当高的可用性。许多云上的 PaaS 服务,正是依赖多可用区,来建设架构并保证冗余的。
PaaS(Platform as a service – 平台即服务)
什么是 PaaS?
在 IaaS 篇中,我们主要是侧重于基础设施类的云服务,尤其是虚拟机、云磁盘、云网络等服务。它们的特点是,和传统 IT 基础设施往往有一个对应关系,所以被称为基础设施即服务(Infrastructure-as-a-Service)。
今天我们的主角 PaaS (Platform-as-a-Service),则是指云计算提供的平台类服务,在这些平台的基础上,用户可以直接开发、运行、管理应用程序,而无需构建和维护底层的基础设施。
用更通俗的话来说,PaaS 是在 IaaS 的基础上又做了许多工作,构建了很多关键抽象和可复用的单元,让我们用户能够在更上层进行应用的构建,把更多精力放在业务逻辑上。
拿房子装修来打个比方的话,IaaS 就好像空空如也的毛坯房,我们还需要操心墙面、地板等基础性工作;而 PaaS 就好比精装修的房子,我们只要搬入自己喜欢的家具(业务逻辑),再适当装饰就可以“拎包入住”,开始美好生活了。
小提示:PaaS 本身也是基于底层 IaaS 构建出来的,使用了云上的各种基础设施。只是这个步骤云服务提供商代替我们用户完成了,还进行了一定程度的封装。
当然,随着 PaaS 服务形态种类的增多、边界的不断扩展,除了那些包含语言运行环境、可编程和可扩展的经典 PaaS 服务之外,还有更多的在云上用来辅助应用构建,或帮助运维的服务,也归入了广义上 PaaS 的范畴。这也是有道理的,因为它们同样是完整的现代应用程序生态的一部分。
对象存储
通俗地解释起来,你可以这样理解,对象存储是你在云上可以创建的一种“网盘”。这个网盘可以存储任意的二进制文件,包括结构化和非结构化数据。你可以随时上传下载,也可以修改和删除。当然,云上对象存储会保证你数据的可靠性、可用性和扩展性,你不需要操心这些细节。
对象存储的高级特性
存储分层
在生产环境下的对象存储,我们往往会存放大量的文件和数据,这些文件的访问频率其实是会有很大差异的。比如说,对于一些比较热门的下载文件,它可能经常需要被访问调用;而如果是一些明细的日志文件,写入后再次读取的机率通常不高,只有当排查问题时,我们才可能去访问翻看它。
所以为了应对不同的访问模式和频率,对象存储贴心地提供了分层的策略,你可以按照访问热度,设置从热到冷不同的存储级别(或者叫存储类型)。其中,存储级别为热的对象,存储空间占用的成本稍高,但访问读取不需要收取额外的费用;而存储级别越冷,则存储空间的单位成本越低,但访问读取需要收取一定的费用。到了极少访问的存档级别,数据的“解冻”可能还需要花费一些时间。
生命周期管理
随着时间的推移、业务的增长,你在对象存储中的内容肯定会越来越多。当总的体量和对象的个数到达一定级别的时候,你会发现对历史内容进行清理就成为了一件非常麻烦的事情。
这时候,生命周期管理功能就可以很好地帮助我们。因为它允许你设置一定的过期规则,当对象满足规则时(通常每天判断一次),可以自动地执行一些清理操作。比如,你可以对一个存储桶或目录进行设置,要求最后修改时间超过 60 天的文件自动切换到低频访问层,超过 180 天的文件则进行归档或删除。
版本管理
云上的关系型数据库
云数据库和传统数据库有很大的区别,这是指在搭建、运维、管理层面,云数据库提升了一个层次,实现了相当程度的智能化和自动化,极大地提升了用户友好度,降低了使用门槛。比如灵活的性能等级调整、详尽的监控体系、攻击防护机制等等,这些许多在传统数据库中需要借助额外工具或产品的功能,在云数据库服务是默认内置,可以开箱即用的。
- 读写分离:当并发数量上升时,关系型数据库容易出现性能瓶颈。这时比较有用的办法,就是实现基于多库同步的读写分离。读写分离虽然是常见的架构思路,但你要是不熟悉细节的话,手工配置起来可并没有那么容易。
新一代云原生数据库
Reference
- 怎么理解 IaaS、SaaS 和 PaaS 的区别? - https://www.zhihu.com/question/20387284/answer/743669668
- https://time.geekbang.org/column/article/206253