1.1 什么是“云计算”

第一章

1.1 什么是“云计算”

最近一开会就犯懵,大家都在说什么云、容器、IaaS/PaaS/SaaS,……,屋子里充满了快活的空气。通过百度搜索和云计算有关的概念,找到以下几条解释(由于免费的v*n不稳定,收费的v*n用不起,就不*了):

云计算:通过网络按需提供可动态伸缩的廉价计算服务,是与信息技术、软件、互联网相关的一种服务。——来自知乎某文章

云计算:是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。——来自知乎的云计算话题

云技术:在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。——来自百度百科

这些解释都有一定道理,但是光看名词解释很难理解到其中的含义。所以本节先来地聊一聊什么是“云计算”:为什么要用云(用于解决什么问题)以及如何解决这些问题。

一、为什么要用云

现今很多企业都需要建立IT系统来支撑自身的业务,这当中就会遇到投资成本过高、软硬件资源的利用率低、系统扩容和维护困难等问题。

1、建设IT系统的投资成本过高

下面先来了解一下企业的IT系统结构。为了建设IT系统,工程师们通常有如下工作计划:

(1)机房基础建设,包括机房选址、装修、供电、温/湿度控制、监控、门禁等;

(2)组件计算机网络,包括大楼综合布线、机柜安装、网络设备购买安装和调试;

(3)安装存储磁盘柜;

(4)购买和配置物理服务器;

(5)安装操作系统;

(6)安装数据库;

(7)安装中间件和运行库;

(8)安装各种应用软件;

(9)导入公司的初始化业务数据。

根据以上的工作计划,可以总结出企业 IT系统的九层妖塔(逻辑层次结构)如图1所示,其中第1~4层为基础设施层,第5~7层为平台软件层,第8层为应用软件层,第9层为数据信息层。九层归并之后可以形成四层结构,分别是基础设施层、平台软件层、应用软件层和数据信息层。基础设施层、平台软件层、应用软件层可以进一步归并到T(Technology),而数据信息层就是(Infomation),合起来就传说中的IT了。

1.1 什么是“云计算”

图1 IT系统逻辑层次结构

可以看出,以上工程无论如何都不能算是省钱的项目,尤其是对非互联网企业来说性价比较低。

2、软硬件资源的利用率低

在传统的IT系统架构中,因为所装的应用对操作系统和应用环境有要求,很多应用不能同时装在同一个系统或环境下,所以企业往往需要购买较多的服务器,最终导致70%-80%的剩余资源都被闲置。

3、扩容困难

服务器扩容是个牵一发而动全身的问题,就和产品经理说的“不就往数据库里面加个字段嘛”是一个道理。

4、系统维护困难

随着系统的运行,病毒入侵、设备老化、数据孤岛难以共享等问题是不可避免的,如果没有专门的IT团队,系统维护又是一个问题。

由此可以看出,企业想要用上伟大的IT系统还是有很多困难的,于是“云计算”就出现了。

二、“云计算”是如何解决这些问题的

1、租赁计算资源

先说结论,如果把应用软件比喻成鸡,把用户想要的数据信息比喻成鸡蛋:

在以前如果想吃鸡蛋,用户需要“买地”(搭建基础设施层)—“盖鸡窝”(搭建平台软件层)—“买鸡”(安装应用软件)—“取蛋”(应用软件输出数据);

而云计算则提供了以下三种服务方式:

在IaaS云服务中,地由地主(云服务提供商)提供,用户租到地后,进行“盖鸡窝”—“买鸡”—“取蛋”;

在PaaS云服务中,鸡窝和鸡都由地主(云服务提供商)负责,用户租到地和鸡窝后,进行“买鸡”—“取蛋”,到这里为止至少鸡(应用软件)都还是由用户负责;

在SaaS云服务中,地主(云服务提供商)把鸡(应用软件)都准备好了,用户只需要等着鸡下蛋(应用软件输出数据)。

针对建设IT系统的投资成本过高的问题,云计算引入了一种全新的方便人们使用计算机资源的模式。企业不需要自己进行机房建设,而是从云服务供应商那儿租赁计算机资源,服务器的维护工作都交给供应商的专业团队,能节省很多成本。根据租用的产品,可以把云计算的服务模式分成以下3类,企业可以根据自己的需求进行选择:

(1)基础设施即服务(Infrastructure as a Service,IaaS)

在IaaS云服务中,云服务提供商把IT系统的基础设施建设好,并对计算机设备进行池化,然后直接对外出租硬件服务器、虚拟主机、存储或网络设备。租赁各种云的服务器就是常见的IaaS云服务,租户在选好CPU、内存和硬盘等信息就能获得一台主机,然后可以在主机上使劲折腾,和现实的主机相比,除了看不见摸不着,其他地方都是一样的。

(2)平台即服务(Platform as a Service,PaaS)

在PaaS云服务中,云服务提供商负责基础设施层、平台软件层(包括提供开发工具、安装应用软件需要的环境和软件执行资源池等)的建设工作,用户租赁软件执行资源来运行自己的应用软件。微信小程序就是常见的PaaS云服务,程序开发者使用微信提供的IDE进行开发,然后将开发好的程序部署到腾讯云(其实不一定必须选择腾讯云作为服务器)中。

(3)软件即服务(Software as a Service,SaaS)

在SaaS云服务中,云服务提供商包揽了基础设施层、平台软件层以及应用软件层的建设工作,用户直接使用云服务提供商提供的软件输出数据即可。用户可以使用任何云终端设备接入计算机网络,然后通过浏览器或者编程接口使用云端的软件。这类应用有以下例子:

1)电子邮件和在线办公软件:谷歌邮箱、网易邮箱、微软Office365在线办公、谷歌在线文档

2)计费开票软件

3)社交网络:如QQ、微信等

4)谷歌在线翻译

1.1 什么是“云计算”

图2 不同服务模式的分工

2、虚拟化技术

针对软硬件资源的利用率低以及扩容难的问题,虚拟化是目前比较好的解决方案。很多人经常把云计算和虚拟化混淆,他们的关系:云计算是业务模式,而虚拟化是具体的技术,云计算中用到了虚拟化技术。

同样地先说结论,假设企业有4个“互斥”(这个名字我瞎叫的,意思就是不能运行于同一个系统或环境)的应用,每个应用需要占用一台服务器20%的资源。在以前,可能需要采购4台服务器,每台服务器的利用率只有20%,简直暴敛天物。而使用虚拟化技术后,就可以在1台服务器中搭建4个虚拟机,服务器的利用率可以达到80%,是不是很优秀呢。同时,对虚拟机进行扩容也比物理机方便得多。

目前对于虚拟化-Virtualization并没有统一的标准定义,但大多数定义包含以下三个方面:   

1)被虚拟的是物理资源(包括CPU、内存、存储、网络等)。

2)被虚拟的物理资源有着统一的逻辑表示,并且这种逻辑能提供给用户物理资源原有的绝大部分功能。

3)经过一系列的虚拟化过程,使得资源不受物理限制的约束,由此可以带来与传统IT相比更多的优势--资源整合、提高资源利用率、动态IT等。

虚拟化技术通过对硬件资源进行抽象、隔离和高效管理,进而为不同用户的应用程序创造隔离的、可定制的和安全的执行环境,而且不影响其他用户的应用程序。简而言之,就是可以在一台机子上虚拟出多个执行环境供多人使用(时间管理大师),也可以将多台机子组成一台机子。虚拟化技术在对硬件资源进行虚拟化的同时也提供了一系列的管理机制来负责资源的分配、回收、调度和复用,能大幅度提高资源的利用率。不止是云服务提供商,很多企业也对既有的服务器进行虚拟化。企业采用服务器虚拟化的好处:

1)集中化管理

管理员不用再跑上跑下的处理每个工位上的主机,所有日常操作远程完成。复制、快照等功能更为管理员的日常维护提供了给力的工具。

2)提高硬件利用率

  1. 一般来说,企业IT的物理资源利用率都是非常低的,因为所有的物理资源必须满足当前甚至几年以后的“峰值”计算需求。而在出现虚拟化以后,可以通过可动态扩展/调整来解决“峰值”的问题,让一台物理机器上运行多个虚拟机以利用这额外的“闲时”容量,而不必增加大量的物理资源;
  2. 在没有虚拟化之前,为了保证应用的可靠性和可用性,避免他们之间的冲突和相互影响,每个物理机一般不会运行多个重要应用,也就是说物理资源一般得不到有效的利用。而虚拟化的隔离特性很好的解决了该问题,从而也提高了硬件的利用率。

3)动态调整机器/资源配置

虚拟化把操作系统和应用程序与服务器硬件分离开来,大大降低了扩容、迁移的难度,不用关闭及拆卸物理服务器,就可以为虚拟机增加或减少资源。

4)高可靠性

通过部署额外的功能和方案,带来具有透明负载均衡、动态迁移、快速复制等高可靠服务器应用环境,减少服务器或应用系统的停机时间,提高可靠性。

5)降低终端设备数量

通过虚拟化技术将多个网管系统整合到一台主机上,可以依旧保证一套系统一台服务器。从而在不影响网管业务的使用的基础上,有效减少硬件设备的数量,降低电力资源的能耗。减少设备所需机架位置空问,避免因设备数量增长造成的机房环境改造。

当然,虚拟化技术也是有缺点的:

1)降低性能

虚拟化毕竟是在硬件层之上进行了封装,相比直接基于物理机,必然会损失一部分性能。从之前的经验来看,当一台物理机上并行运行多个虚拟机时,物理机资源的使用率越高,虚拟机性能下降的越剧烈。主要有两个原因:

  1. CPU方面,若VM配置了多核CPU,当VM内应用要求多核同时处理某一任务时,此时物理机若只有少于所需的核数空闲,那么VM会锁住可用的核再去等待其他的核释放。若虚机较多并且物理机CPU很繁忙,此操作会造成类似于死锁的现象,导致表象性能急剧下降。近几年各大厂商在此方面做了很多的优化,该bug有很好的改进;
  2. IO方面,通常的IO是直接写在物理硬盘上,而VM的IO则是先写在host系统的虚拟机镜像文件上,再由host以某种策略写入物理硬盘。一来这种二段式的写入会造成读写的延迟,二来当计算部署的虚机数量时,硬盘的IOPS和多机造成的随机写方式,往往是非常容易忽略的一个指标。例如,7200转的SATA盘理论IOPS是76,一般windows工作时的IOPS是10~30(装杀毒软件的话可能double一下),因此理论上一块SATA盘只能支持2~3个VM。当虚拟机数量超配后,多个VM繁忙时会造成所有VM处于io_wait的状态。

2)可能扩大错误影响面

在常规配置下,虚拟机存储于本地物理机硬盘上。真实物理机down机,上面的虚拟机将全部不可用。另外还有一个真实发生的故事,物理机硬盘损坏,一般可以恢复出绝大部分文件,但碰巧坏的是虚拟机镜像文件,结果虚拟机里面的文件全军覆没。

3)实施配置复杂,管理复杂

通常的IT管理员并不能很好的排查并解决虚拟化使用过程中的问题,例如经常碰到的VM不能启动或者卡死,没有真实物理机那么好解决。

4)建设成本并不低。

虽然后期的电力和管理费用比传统纯物理机要省,但前期建设成本甚至有可能超过单买PC机的价格。

3、维护交给专业的团队

在云计算中,云服务提供商肯定会有专业且身经百战的维护团队,比如阿里996的团队肯定能满足用户绝大部分的需求。

综上,云计算是一种非常高效的业务模式,也正得到越来越多的应用,后面的文章将更加深入地了解其中的门门道道。