云计算的核心是“基础设施”。理解为“在云端的计算服务”。
互联网服务,都被部署在“云端”。在用户端视角里,云端就是整个互联网。实现云计算,需要服务提供商在互联网上部署大量的计算资源以提供服务。
云计算业务的技术核心为:计算资源的管理和分配。好的云计算平台,一定可以很好的管理计算资源。
在计算机领域,计算资源分为三种:
- 计算资源:CPU,GPU
- 存储资源:数据库,数据湖
- 网络资源:网络带宽
云计算可以理解为”在云上的虚拟电脑“,其运算和存储都在互联网上。用户运行软件,开发软件都可以在互联网提供的基础设施上进行,而不需要自行搭建服务器,部署计算资源。
弹性化
使用过云服务的开发人员都知道,在云平台上,可以任意购买所需的服务资源,而且即买即用,非常方便。并且,云资源都支持弹性伸缩,不够了可以扩展,买多了可以减少。而用户要做的,就是付款,等待配置完毕就行了。
在弹性化管理的背后,是强大的平台运维能力。云平台需要对算力和存储能力做系统化的规划和部署,才能达到这样的效果。
资源虚拟化
需要弹性化部署,那么就一定要动态分配资源。但是我们知道,计算机的算力是有结构的。CPU 的最小可分单位是核心数,一个内存条一般是 1G-16G。那么,为了弹性管理服务器,是否可以按需部署半台机器或者 1/4 台机器呢?
虚拟化就可以解决这个问题。虚拟化,就是利用为运行的软件虚拟出一个硬件环境。例如,我可以在一台单核 CPU,2G 内存的计算机里面创造两个虚拟环境,每个虚拟环境占据 1 个 CPU 加 1G 内存。当然也可以创造四个虚拟环境。虚拟环境就如同真实机器里的虚拟机器一样。
虚拟化,实现了计算性能的“弹性拆分”,在云计算技术中十分有用。
云原生
云原生是基于云计算概念的软件开发方法,通俗点说就是”原生部署在云计算平台上的软件“,作为普通用户,我们使用最多的 SaaS 应用或者 H5 微信小程序一般都会使用云原生的方法部署后端服务。
云原生的定义:一个应用从设计到交付就是基于在云计算架构上的,可以理解为“原本就是为云计算平台设计和实现的服务”。
根据云原生的定义,一般会使用以下几种基本技术:
我对此的理解是,使用这些技术的原因是这些技术是云原生的最佳实践,也即最优化的方案。当然,可以根据不同的场景使用不同的技术栈,最终使用哪种技术栈,还是要跟着需求走。
云计算的应用
名称 | 提供服务 | 用户的开发能力要求 | 市场泛化能力 |
---|---|---|---|
IaaS | 互联网基础设施 | 开发和运维能力 | 最强 |
PaaS | 平台服务和中间件 | 开发能力 | 中等 |
SaaS | 软件 | 无 | 最弱 |
根据运营商提供的不同级别的服务,可以将云计算划分成以下几种领域
- IaaS 基础设施服务:运营商提供基础设施,例如云服务器,网络,存储等。用户需要有开发能力和一定的运维能力才能使用。
- PaaS 平台服务:运营商在基础设施之上,提供了中间件服务,包含各种运行时软件。例如数据库,开发环境等。用户需要有开发能力才能使用。
- SaaS 软件服务:运营商直接提供软件,直接面向使用者,用户不需要有开发能力。
从以上的概念来看,IaaS → SaaS 的云计算服务是按层构建的关系。对使用云计算的用户的要求也逐级降低。然而,越基础的服务可以提供更多的定制化选项,面向的市场也更大。
而低代码平台则位于 PaaS 和 SaaS 之间,称为 aPaaS。用户无需代码或者很少的代码能力,利用流程编辑即可完成业务。