作为 "十三五" 重点规划产业之一, 云计算到底是什么? 又会怎样发展? 最近兴起的云原生 (Cloud Native) 和无服务器架构 (Serverless) 又与云计算有什么关系? 本文将以云计算的发展为路线, 为大家科普云计算的概念与现状, 无论读者是开发, 测试, 抑或是产品, 管理者都能在本文中有所收获.
纵观整个服务器的发展历程, 可以分为三阶段, 自建服务器时代, 服务器托管与租赁时代, 云计算时代.
自建服务器时代
早期的计算机主要分为两种使用方式, 组织自建机房与租用, 自建机房很好理解, 就是买一台放在公司自己用, 租用一般是制造商提供租赁使用, 按时付费, 是不是有点今天云服务器的意思?
早期的 IBM 650 要价 50 万美金, 或可以每月 3500 美金的价格出租.
服务器托管与租赁时代
至 web 时代来临, IT 公司大量采用 B/S(浏览器 / 服务端) 架构, 客户端越来越轻量化, 大部分资源存储在服务端, 导致服务器需求激增, 于是服务器托管业务应运而生, 早期多为 ISP 即互联网服务提供商 (Internet Service Provider) 承接, 简单来说就是买一台服务器(也可以直接使用 ISP 的服务器), 放到 ISP 机房由 ISP 负责维护, 比如分配 IP, 网络带宽, 免去要申请商业化宽带以及管理服务器的麻烦, 节省办公空间.
发展到这时, 租用 ISP 的服务器已经有了云计算的雏形了. 但还是有很多缺陷:
部署笨重, 一台服务器只能租赁给一个客户, 无法共享资源池
无法监控服务, 服务器物理独立, 很难介入监控系统状态
费用很高, 服务器要钱, 托管也要钱, 对中小企业不友好, 个人开发者更没可能
服务器利用率不高, 一台 8 核 16g 的服务器, 几个程序很难将服务器跑满, 即便跑满了也无法保证独立互不影响
单点故障问题, 如果服务器损坏, 很难快速甚至可能无法恢复服务
服务器托管与租赁如今也大规模存在.
云计算时代
办法总比问题多, 这些问题伴随着 2000 年左右虚拟化成熟迎刃而解, 而 2013 年的容器化技术更是让云计算锦上添花, 在了解云计算之前, 我们先来了解一下虚拟化技术.
虚拟化技术
虚拟化技术早在 60 年代就被 IBM 创造出来了, 当时是为了并行执行程序(早期计算机单一时间只能执行一个程序, 想要运行另外一个就要退出当前程序), 后来被多进程多线程技术取代了.
虚拟化技术就是将计算机硬件模拟成多个并且分别提供给多个用户使用, 其实现也很简单, 就是在硬件与操作系统间增加一层代理, 用于欺骗 (隔离多个) 操作系统, 这个代理就是大名鼎鼎的 Hypervisor,Hypervisor 也叫虚拟机监视程序( virtual machine monitor, VMM), 并不是指某个具体的软件, 而是代表所有能够管理虚拟机的软件.
Hypervisor 按结构划分可以分为两类, 一类直接接管硬件 (Native 或称 Bare metal) 自己就是一个专用操作系统, 如 Hyper-V,VMware ESXi,Xen,Kvm 等; 另一类需安装在操作系统上(Hosted), 这一类普通用户接触的比较多, 如 Parallels Desktop for Mac,QEMU,Virtual Box,VMware Workstation 等, 下图从左到右分别为 Native 与 Hosted.
Hypervisor 按照技术实现可以分为, 全虚拟化 (Full virtualization) 与半虚拟化 (Paravirtualization), 全虚拟化致力于完全模拟, 虚拟机内运行的操作系统无感知, 其优点是兼容性好, 操作系统无需修改即可运行在虚拟化环境上, 缺点是因为一些历史遗留问题(CPU 设计缺陷, 部分敏感指令无法被捕获, 一般使用动态劫持, Hypervisor 拦截, 动态替换指令, 后续的硬件辅助虚拟化解决了这个问题, 见下文) 导致效率比较低, 如 Vmware Workstation/Server, Virtual PC/Server,Parallel Workstation; 而半虚拟化则部分模拟指令, 很难模拟的指令则通过修改虚拟机内的操作系统内核来实现, 其优点是效率较高, 缺点是必须修改操作系统内核, 如 Xen,Vmware ESX Server,Microsoft Hyper-V R1 等, 需注意的是二者仅是将部分敏感指令在不同位置处理, 全虚拟化在 Hypervisor 中处理, 半虚拟化则在虚拟机操作系统中处理.
硬件辅助虚拟化于 1972 年首次出现在 IBM System / 370 上, 英特尔与 AMD 意识到虚拟化市场的重要性, 于是也想做些贡献 (捞一笔),x86 处理器辅助虚拟化(英特尔 VT-x 或 AMD-V) 分别在 2005 年和 2006 年推出. 硬件辅助虚拟化致力于解决早期的 CPU 设计缺陷, 并且增加了虚拟化专用指令来提高效率, 目前硬件辅助虚拟化已经成为服务器虚拟化的基石(虚拟化技术还包括内存, 存储, 网络虚拟化等, 此处不再展开).
Hypervisor 的虚拟化方式被称为硬件虚拟化(早期叫平台虚拟化), 硬件虚拟化的出现彻底解决了资源分配的问题, 其优点是隔离性好, 几乎模拟了真实环境, 缺点是每个用户使用独立的操作系统内核, 运行时, 资源浪费, 设想一下场景, 如果同一个服务器需要多个隔离环境的 Windows Server 2012, 采用虚拟化则需要运行多个操作系统, 即便版本, 环境都一模一样也无法共用资源. 是否有一种更轻量化的资源分配方式呢? 这就不得不提大名鼎鼎的容器化技术.
容器化技术
容器技术 (Containerization) 在技术上几乎没有创新, 是一种操作系统级别虚拟化技术 (OS-level virtualization), 通过操作系统的支持模拟出隔离环境, 限制资源访问, 其本质上仅仅是操作系统中的一个进程, 本身足够轻量化. 如今容器化技术几乎被 Docker 垄断, Docker 于 2013 年 3 月开源, 至今已经成为云计算与微服务乃至云原生架构中至关重要的技术, Docker 相比虚拟化技术具有轻量化, 效率高(所有容器使用同一个操作系统内核, 运行时) 等特点, 缺点是隔离不好, 服务器压力高, 所有 Docker 进程都会受到影响, 有趣的是 Docker 与前面的虚拟化技术完美互补. Docker 解决了资源分配问题, 而 2014 年 Google 开源的 Kubernetes 则解决了云与容器的结合问题, 目前 Kubernetes 已经成为容器管理, 编排事实上的标准.
至此云计算在资源调度方面已经集齐了最后一颗龙珠, 虚拟化技术的成熟标志着云计算成熟, 云计算采用虚拟化技术与容器技术结合规划资源, 而 Kubernetes 的横空出世则代表云计算将告别仅仅租赁服务器的时代.
什么是云计算?
我们来看美国国家标准和技术研究院 (National Institute of Standards and Technology) 的定义:
随需应变的自助服务.
随时随地用任何网络设备访问.
多人共享资源池.
快速重新部署的灵活度.
可被监控与测量的服务.
一般认为还有如下特征:
基于虚拟化技术快速部署资源或获得服务.
减少用户终端的处理负担.
降低了用户对于 IT 专业知识的依赖.
简单来说就是按需付费, 支持按时, 按 CPU 核, 按内存, 按带宽, 按硬盘大小来付费. 云计算发展到今天, 有着更细化的市场, 如阿里就将服务分为弹性计算 (IaaS), 存储服务(PaaS), 数据库(PaaS) 等, 每种设施还有更加细致的分类, 如弹性计算中的 ECS, 就可以分为通用型, 计算型, 内存型等, 用于满足不同企业需求(本段文字 500 元, 去掉括号中内容再发).
云计算的发展
讲云计算发展必须先了解云计算的概念. 云计算由美国国家标准和技术研究院 (National Institute of Standards and Technology) 定义了三种模型, 对应三种服务级别: 基础设施即服务 (IaaS), 平台即服务(PaaS) 和软件即服务(SaaS).
IaaS(Infrastructure as a service)基础设施可以简单理解为虚拟机, 服务器, 存储, 网络等, 如亚马逊的 EC2, 阿里的 ECS.
PaaS(Platform as a service)平台可以理解为一些更具体的基础设施, 比如 Web 服务器, 数据库等, 如阿里的云数据库系列.
SaaS(Software as a service)软件可以理解为开箱即用的软件, 广义上来讲, 所有的互联网产品都可以是 SaaS, 如钉钉, 163 邮箱, 都可以被称为 SaaS.
其他扩展
XaaS, 面向服务架构 (Service-oriented architecture ,SOA ) 提出的架构理念, 即一切皆服务,"X as a service","anything as a service" 或 "everything as a service" , 也有写作 EaaS, 具体实现如: IDaaS 身份认证即服务 (Identity as a Service),BaaS 区块链即服务(Blockchain as a service),PaaS 支付即服务 (Payments as a service) 等, 这些都可以被归集到上面三种模型.
云计算按照部署版本可以分为私有云, 公有云, 混合云. 私有云为企业私有, 并不对外服务; 公有云并不代表免费, 而是对外提供使用(收费); 混合云则同时拥有二者特性.
相信读者到这里已经了解什么是云计算, 简单来说就是对外服务器租用, 早期的服务器租用在员外看来也可以称之为云计算(IaaS), 对比今天的云产品本质上没有区别, 只是在资源上更加细化, 服务上更加完善而已. 我们来看一下云计算的历程:
1996 年, Compaq 公司在其公司的内部文件中, 首次使用 "云计算" 这个词汇.
2006 年 8 月, 亚马逊创建了子公司 Amazon Web Services, 并推出了弹性计算云(Elastic Compute Cloud, EC2).
2008 年 4 月, 谷歌发布了测试版 Google App Engine.
在 2008 年初, NASA 的 OpenNebula 在欧洲委员会 (RESERVOIR) 资助的项目中得到了增强, 成为第一个用于部署私有云和混合云的开源软件.
2010 年 2 月, 微软于 2008 年 10 月发布了 Microsoft Azure.
2010 年 7 月, Rackspace Hosting 与 NASA 共同发起了一项开源云软件计划, 称为 OpenStack. OpenStack 早期代码来自 NASA 的 Nebula 平台以及 Rackspace 的 Cloud Files 平台. OpenStack 是第一个开源的云平台.
2011 年 3 月 1 日, IBM 宣布了支持 Smarter Planet 的 IBM SmartCloud 框架.
2012 年 5 月, Google Compute Engine 发布了预览版本.
- https://en.wikipedia.org/wiki/Cloud_computing
- https://docs.aws.amazon.com/lambda/index.html
- https://en.wikipedia.org/wiki/Serverless_computing
- https://en.wikipedia.org/wiki/Virtualization
- https://en.wikipedia.org/wiki/Docker_(software)
- https://en.wikipedia.org/wiki/Paravirtualization
- https://en.wikipedia.org/wiki/Full_virtualization
- https://en.wikipedia.org/wiki/Hypervisor
来源: https://www.cnblogs.com/xuningfans/p/12187946.html