云计算起源与发展
云计算之前
- 机房发展趋势
- 专业用途化:某个机房专门为某种服务而建设
- 复合化:机房除了承载云计算,还承载通信服务器工作
- 网络基站之间,往往会放上一些计算服务器,即边缘计算
- 网格计算
- 弱协同性:各自为战,复杂的计算任务拆解给每个计算节点,大家各自做自己的任务,最后合并即可。
- 超算
云从哪里来
服务器发展阶段
-
普通服务器
-
一台计算机运行一些程序代码、数据库。稳定性差
-
小型机阶段
-
Sun公司的Solaris小型机
- 一般两台组成,可以容灾、冷备。
- 运行LAMP架构:Linux、Apache、Mysql、PHP
-
比较昂贵
-
资源池阶段
-
x86出现,机器服务器化
- 计算资源池化,上层应用按照虚拟化的方式分配计算资源即可。
-
普通池化技术:内存池、CPU池、存储池
-
虚拟化技术
-
服务器虚拟化
- Hypervisor在硬件基础上虚拟化出VM,安装不同的操作系统
-
网络虚拟化
- 网络虚拟化可以在虚拟机内部设立局域网,用于VM之间或外部通信。
- 桌面虚拟化
- 把桌面变成云上可访问的资源
技术采纳以及普遍规律
- 技术采纳曲线:创新者-早期采纳者-早期主流-后期主流-迟滞者。
云计算对IT的影响
- Devops的产生:开发、测试、运维都在一致的环境工作 - 甚至开发人员可以自己测试、自己发布虚拟化容器进行部署,开发对代码负责到底。
- 数据库放到云上,本地的数据库管理员岗位减少。
云计算的优势
-
技术方面
-
与NC(网络计算机)的区别:
- NC是多台客户端机器在局域网中连接到同一台windows server,没有做CPU和内存隔离,一荣俱荣一损俱损。
- 云计算是基于虚拟化的,可以精细控制访问粒度和资源。
-
与服务器租赁的区别:
- IaaS服务是最接近服务器租赁的
- SaaS服务提供开箱即用的托管OS以及其上的开发软件
- SaaS提供托管的软件服务
-
价格方面
-
按需使用、按量付费
-
高扩展性、高访问性
-
安全性提升
-
物理隔离:使用者和云服务之间使用专线网络通信。
- 租户隔离
- 云主机上的每个云服务之间构造防火墙和资源限制。
[!info] 租户隔离
- 租户:云平台的一个服务器,给多人共同使用,每个人在自己付费的时间内,可以在自己账号的权限范围内,使用服务器,这些人就是租户。
- 租户需要保持相互隔离,一是为了计费独立,二是为了每个租户具有单独的权限管控,阻止租户访问权限外的资源。
- Azure中租户通过AAD实现权限管理,不同租户运行在分隔网络的物理服务器上,在OS层面,物理主机windows防火墙过滤跨AAD的网络连接,避免跨租户入侵。
- 计算隔离
- 虚拟机中存在"虚拟机逃逸"现象,从VM内部运行漏洞调用代码,突破VM操作系统,直接与宿主机进行交互。
[!example] Azure 计算隔离实现
- Azure中,host node上运行经过安全强化的Windows Server,该系统只包含托管VM必备的组件
- HyperV直接运行在硬件上,划分出来若干guest VM,还有运行主机操作系统的Root VM,之间相互隔离。
- Fabric Controller将VM分配给客户,并且与guest agent单向通信。guest agent无法与其他FC通信。
-
Serverless服务
-
Function as a service:微服务架构下,许多服务模块是通用的,把他们提供给用户使用。
-
BlockChain as a service
-
SLA保证
- 可用性
- RPO(recovery point object)
- 描述故障期间最大可以容忍的数据丢失量。即一个系统故障期间,最大可以容忍多少数据丢失量?
- 举例:午夜做了备份,早8点故障了,还原回午夜的备份。这样就丢失了8h的数据,系统如果RPO是10h,那这部分丢失数据就不会对业务连续形产生影响;如果RPO只有3h,那业务就无法恢复。
- RTO(Recovery Time Point)
- 描述灾难后,业务恢复所需的时间。
- 举例:系统如果允许24h的RTO,那么故障后24h之内修好,就不会影响其运行,否则造成损失。
云计算核心服务
存储
分类
- 文件存储
- 对象存储
- 对于应用程序,尤其是以面向对象存储的程序,可以选择对象存储作为业务数据持久化层。
- 块存储
- 大段二进制数据存储空间or磁盘
- 完全无结构,没有文件或对象的概念。
持续集成与发布
示例:建立.NET Web程序的CICD
dotnet项目配置
-
安装dotnet
-
配置dotnet工具包源
dotnet nuget add source 命令 - .NET CLI | Microsoft Learn
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
- 安装openapi工具包
dotnet tool install --local Microsoft.dotnet-openapi --version 7.0.5
- 创建一个示例项目
dotnet new webapi --name helloweb --force
- 进入项目目录
dotnet run
- 启动后,尝试浏览器访问:localhost:5158/WeatherForecast

git仓库配置
- 初始化仓库:在项目目录下
git init
- 创建gitignore文件
touch .gitignore
//添加目录列表:
bin/
obj/
- 添加到本地仓库
git add .
git commit -am "dotnet hello world update"
- github创建仓库-本地推送到仓库
git status //查看主分支名字是main还是master
git remote add origin https://github.com/hangx969/dotnet_helloworldweb_demo.git
$ git push -u origin master
- 在云上创建自动化编译
pending...DevOps on Azure has been deprecated.
云计算的局限性
网络依赖
互联网连接是云计算交付到世界各地的基本要求。
- 截止2020.7,台湾只有GCP有数据中心,如果使用其他云厂商的服务,只能选临近的数据中心,通过海底光缆联网,如果光缆受地震破坏,那就瘫痪了。
- 带宽限制:澳洲网络带宽发展缓慢,2019年也没推进到50Mbit/s光纤入户的带宽。解决方法是在各地没有数据中心的地区建立许多网络接入点,接入点和邻近的数据中心通过专线直连。当数据进入接入点后,走后端网络架构,速度提升。
易受攻击
- DDoS:针对网络出入口,使用大量数据包或服务器请求对其阻塞。如果一个网站被DDoS攻击、,由于数据中心使用同一个网络出入口,那么其他用户亦会受到影响。
- Azure采用红蓝对抗方式应对安全风险,红队研究黑客攻击手段,蓝队研究防御方法。
- 跨租户攻击,有时可以利用硬件缺陷;比如攻击者的虚拟机和被攻击者的虚拟机位于同一物理主机,则会产生跨租户攻击;虽然主流OS发布了补丁来预防,但是软件无法根本修复硬件层面缺陷。
云计算新技术
Devops
- 伴随敏捷开发。
- Windows和设备部门WDG,经历了从各个小团队使用不同的项目管理工具,到都使用Azure DevOps;Windows10之前,3年发一个大版本;Windows10之后WDG统一用上AzureDevOps之后,持续开发持续发布,缩小了发版间隔,半年一个周期
无服务器
- 传统C/S架构中,需要一台server来持续运行服务,响应请求。例如web网站跑在服务器上,不论有没有client访问,服务器都要保持运行,持续消耗电力、网络;并且这种架构也不方便扩缩容,有时候也需要有维护窗口。
- 无服务器:云平台托管你提供的网站代码,平台会根据请求动态分配并执行这些代码,有用户访问,就分配到server上执行,计费也是按照运行时间计费。当访问量大的时候,就分配更多计算资源。
- 无服务器模型下,传统的大型程序会被拆分成许多组成部分,每部分都以无服务器形式运行,形成彼此独立的微服务。
容器化
- 虚拟机的虚拟化只是停留在硬件层面,虚拟出了一套硬件,里面还是得安装操作系统;直接对操作系统进行抽象和虚拟化,减少系统级开销,就是容器化的目标。
- 运行在宿主机上的容器以进程的方式存在,从容器的应用程序角度来看,可以获得和本地应用程序一样的资源访问能力,但这些资源仅限于容器内,容器是一套隔离的环境,但这套环境重用了操作系统,降低了开销。
- 大量容器共同运行就需要编排系统:Kubenetes名称源自希腊语,意为总督