云计算起源与发展

云计算之前

  • 机房发展趋势
  • 专业用途化:某个机房专门为某种服务而建设
  • 复合化:机房除了承载云计算,还承载通信服务器工作
    • 网络基站之间,往往会放上一些计算服务器,即边缘计算
  • 网格计算
  • 弱协同性:各自为战,复杂的计算任务拆解给每个计算节点,大家各自做自己的任务,最后合并即可。
  • 超算

云从哪里来

服务器发展阶段

  • 普通服务器

  • 一台计算机运行一些程序代码、数据库。稳定性差

  • 小型机阶段

  • 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

image-20230523213252474

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名称源自希腊语,意为总督