# 漫谈云计算

通过 Internet(也称为”云“)提供计算服务。

这些服务包括服务器资源、存储、数据库、网络、软件、数据分析等。


在开始介绍 云计算 以前,需要一些前置的知识,作为铺垫:

  1. 数据中心(data center)
  2. 虚拟化(virtualization)
  3. 云计算(cloud computing)

# 数据中心 Data Center

简单来说,数据中心 (opens new window)就是一个存储和计算数据的物理场所。

当业务方的业务较小,可以把服务器放在公司内部自行管理和运维;但随着业务增长,就需要更大的空间、更多的计算资源和其他基础设施的保障。这时候,可以将服务器资源托管给数据中心,由数据中心负责电力、网络的保障。

而企业要搭建一个数据中心,其成本是非常高昂的,并且有很复杂的前期准备,之后还需要精心的后期维护。

从搭建上来说,搭建一个数据中心需要的资源:

  1. 场地
  2. 电气设备
    • 冷却设备
    • 备用电源
  3. 网络
  4. 服务器

场地的选择,依赖于需要的计算资源的大小和业务规模,不过最佳的选择是电力供应充足且廉价、气候寒冷的地方,气温低可以降低冷却成本。

电气设备,不仅要保障服务器的供电,还需要保障服务器的散热,高密度的服务器的运行会带来巨大的热量。此外还需要部署备用电源,以避免外部电力供应故障的情况下,导致机房断电,造成服务中断;严重的断电事故,会造成硬件的损坏和数据的丢失。

高速的网络接入,包括多运营商的网络接入,和专线网络的接入,以满足不同业务方的需求。

最后才是部署服务器,要把服务器塞到机柜里,通电、接入网络、安装系统。以供业务方使用。

交付服务之后,如果服务器硬件有故障,还需要进行更换操作;操作系统可能也需要更新补丁……等等

# 虚拟化技术 Virtualization

有了数据中心,可以给业务方提供充沛的计算资源了,但是又有了新的问题:不是每个业务方都需要如此强大的计算资源,一个静态的个人博客,不需要占用一台高性能的服务器,这是一种极大的浪费。如果可以把一台机器继续切分,更细粒度的去分配这些资源就好了。虚拟化技术就诞生了。

基于宿主机(host machine)之上,通过虚拟化技术,构建出单台、多台 虚拟机(Virtual Machine);每台 VM 有自己的硬件、系统环境。

对于虚拟机 VM 中运行的程序来说,只能感知到 VM 的存在。宿主机的真实配置、情况,对 VM 中的程序是透明的。

这种技术有很多好处:

  • 可以提供多种运行环境。比如在 Linux 的宿主机上,提供 Windows 的 VM 实例。
  • 增加新的计算资源时,不再需要单独添置新的服务器,而是直接通过软件,虚拟化出新的 VM,供给给需求方使用。
  • 可以提高资源的利用效率。将资源切分得更细,精确供给给业务方。业务方需求有多少,就供给多少。
  • 在多业方的情况下,相互之间可以做到系统环境的隔离,有解耦的效果,避免业务方 A 对系统的改动,影响到业务方 B。
  • 虚拟化后,冗余的资源可以对外售卖,作为一种商品提供,将这种计算的能力,和水电煤一样对外出售:即 云计算
  • ……

虚拟化技术的发展走过了 2 个阶段:

  1. 以 VMWare 公司为代表的,虚拟化出完整的硬件,在上面运行完整的操作系统。

    vitual-machines
  2. 以 Docker 为代表的容器化技术,每个 container (pod in k8s)有自己独立的环境,但是 CPU 资源、内存资源直接调用系统的资源。相比于完整虚拟化的方式,更加轻量化。

    docker

更为完整的 Docker 技术的架构图,如下图:

docker-on-linux

# 云计算

云计算服务有 3 种主要类型:

  1. IaaS (opens new window)(Instruction as a Service)基础设施即服务
  2. PasS (opens new window)(Platform as a Service)平台即服务
  3. SaaS (opens new window)(Software as a Service)软件即服务

iaas-paas-saas

# IaaS 基础设施即服务

  • 基础的 VM 实例
  • 存储资源(硬盘)
  • 网络资源

# PasS 平台即服务

  • S3 对象存储
    • 提供超大规模的文件存储、检索的能力;提供超高的文件可靠性
  • CDN(content delivery network,内容分发网络)服务
    • 就近分发静态资源(图片、视频、静态网页等)给用户,提高用户的访问速度

# SasS 软件即服务

典型如本站点使用的 Azure Static Web App 静态网页 App 托管服务,用户只需要准备好需要托管的内容(代码),Azure 负责准备好存储空间、网络等其他基础设施,全托管计算资源、网络配置等繁杂活动。