云计算(2) 云计算架构
2023-08-09 14:53:19 # NJU # 云计算

二、云计算架构

1 计算架构及演化

  • 计算机软硬件经历了长时间的演变,计算范式也经过了多次变化:集中式、CS、BS、并行、分布式等

  • 不同的计算范式对应不同的计算架构

    • 中央集权架构
      • 计算机刚出现时候的首选:所有计算及计算资源、业务逻辑都集中于一台主机
    • 客户机/服务器架构
      • 客户端:承载少量计算任务和所有IO任务
      • 服务器:承载主要计算任务
      • 优点:关注点分离,简化软件复杂度、编程模式
      • 缺点:持久链接,系统伸缩能力受限
    • 中间层架构——简化和提升伸缩能力
      • 将业务逻辑和数据服务分别放在两个服务器上
      • 客户机到中间件为无状态的非持久链接——提升架构弹性
    • 浏览器/服务器架构
      • 对客户机、中间层架构的扩展——客户端和中间层均改动
      • 客户端:负载进一步缩减,仅显示和运行基于浏览器的脚本程序
      • 服务器:Web服务器层屏蔽各中间件的差异,提供通用的用户访问界面
      • 扩展性高:对客户机性能无要求
      • 对网络性能要求高
    • C/S和B/S混合架构
      • 没有一种架构能够适用于所有场景
      • 有些服务需要持久的链接(内部用户)
      • 有些仅通过非持久链接即可(外部用户)
    • 面向服务的架构(SOA)
  • SOA

    • 中间层计算架构、B/S架构、混合计算架构都可为云计算提供一定的伸缩能力

      • 共性:基于无状态连接【http请求】和基于服务的访问【而非过程调用】
    • Service-oriented Architecture 面向服务的体系结构

      • 每个程序只做本职工作,将服务暴露出来供其他程序使用

      • 多个程序通过一个统一的界面协调工作——控制复杂性,更容易管理

      • 区别于“分布式对象”

        Java:Java对象、RMI(Remote Method Invocation,远程方法调用)

        CORBA:CORBA分布式对象、IDL(Interface Definition Language,接口定义语言)

        通过RPC(Remote Procedure Call,远程过程调用)连接

image-20221005103200089

  • 将Service(服务)作为分布式对象
    • SOA是关于如何设计一套使用服务的软件系统
    • 使得服务间的互操作性变得可扩展和有效
    • 特点:松耦合,定义并发布接口,基于标准的通信模型
    • 实例:REST(Representational State Transfer)Web Service

image-20221005103638669

2 一般云计算架构的二维视角

  • 从不同的角度看,云计算架构的复杂性有一定的差异

  • 最易于理解的二维视角:基础设施 + 应用程序;两者分别视为:前端(呈现给用户的界面) + 后端(云组件)

    image-20221005104717547

  • 多实例同时执行;不同实例之间能够协调对数据的处理及任务的执行;方便数据在各个模块之间共享。

  • 基础架构——云内部,后端

    • 硬件:服务器、存储器、网络交换机等
    • 管理软件:服务的高可用性、可恢复性、数据一致性、应用伸缩性、可预测性、云安全等
  • 应用程序——云对外,前端

    • 并发性、协调性、容错性、开放的API格式、开放的数据格式、承载数据密集型计算

基础架构的进一步分层结构

  • 虚拟化层
    • 将硬件转换为统一的IT资源【可灵活拆分、统一计量、统一管理、软件定义的】
    • 可以在不同的抽象层实现:应用层、操作系统层、体系结构层、硬件层等
  • Web服务层
    • 将云资源提供给客户的一种最方便的方式,解决大部分客户无法直接使用虚拟机的问题
    • 支持面广、对客户端要求低,只需要浏览器就可以访问;所有提供的服务均可以通过API访问,该类API为”表征状态转移” Representational State Transfer, REST
  • 服务总线层
    • 即中间件层,封装计算服务、数据存储、消息传递
    • 分离用户与虚拟化层、连接用户与Web服务层
  • 客户机用户界面
    • Web门户,将各种服务混搭集成在一个页面
    • 基于Ajax,JavaScript,趋势是使用功能完善的组件
      • 如JavaBeans/Applets, Silvedight/.NET等
      • 可下载和安装在客户机上

image-20221005105203774

云应用程序的结构——云应用程序与传统操作系统上的应用程序结构有所不同

  • 传统操作系统上的应用程序:进程、线程、服务、shell(应用程序的控制接口)
    • 进程就是最终产品,每一个进程可运行多个指令序列(线程),一个线程对应一种服务
  • 云环境中的应用程序:应用程序本身、应用实例、服务、云命令行界面(控制端)
    • 应用程序是云应用最终的样子,由多个同时运行的实例支撑
    • 不同的应用实例运行在不同的服务器上,每一个应用实例提供一种或多种服务
    • 服务之间是相互独立的(微服务架构)

image-20221005110228629

3 云计算逻辑架构

  • 云体、云平台、云栈、云计算、云环境、云系统…
  • 云体
    • 是云计算的物质基础,是云计算使用的资源集合,是构成云计算的软硬件环境,例如网络、服务器、存储器、交换机等。广义的云体包括数据中心机器辅助设施如电力、空调、机架、冷却等系统。
    • 目前可以认为:云体 就是 数据中心
  • 云栈
    • 又称云平台,是在云上建造的运行环境。它能够支持应用程序的发布、运行、监控、调度、伸缩,并为应用程序提供辅助服务机制,如访问控制、权限管理等。
  • 云计算
    • 是利用云体和云平台所进行的计算或处理——云计算可以在云体上直接进行,也可以在云平台上进行。无论在哪个层面开展,只要符合“按量计费、资源可伸缩”就是云计算。
    • 云存储、云服务、在云上运行自己的软件或算法,都是云计算。
    • 云计算是人们利用云体和云平台所从事的活动。

3.1 逻辑云栈

  • 云栈——提供的服务多种多样,规模巨大,需要简历规则才能便于管理,即层次架构

  • 云计算也遵循分层规则,组织为多个层次,相互叠加

    • 每一层都提供一种抽象,最下为物理硬件层
    • 每往上一层,易用性就增加一分
    • 到底应该分几层没有明确的规定或准则
    • 不同的厂商有不同分法:三层、四层、五层
  • 以纵向的方式来构建云计算的整体架构

    image-20221005111806870

  • 云栈的三层模式

    • 基础设施即服务层

      • 不仅包括硬件设施,还包括虚拟化,因为各种硬件规格、性能、质量不统一,无法在其上直接建造云平台。虚拟化可以将各种硬件变为统一的标准件。
    • 平台即服务层

      • 在虚拟化的IT资源上构建起应用程序的运行环境,对外提供的产品包括计算环境、云存储库、通信机制、控制调度机制,统称为云计算平台或云解决方案栈。消费的是云基础设施服务,支持的是上层的云应用程序。
    • 应用程序层-软件即服务层

      • 基于网络进行远程访问的商用软件
      • 集中式管理,而非分散在每个用户站点
      • 单个实例多个租户架构——一对多模型
      • 按照用量计费(实际应用中按月或其他时间周期计费)

      image-20221005112550160

  • 从管理角度看,与云栈分层架构对应的是云计算技术体系结构——如何实现三层服务

  • 不同供应商提供了不同的解决方案,没有统一的技术体系结构

  • 综合不同厂商,构造如下参考体系结构:关键是如何实现和管理

    image-20221005112653197

3.2 技术体系结构—各层内涵

image-20221005113005932

3.3 IaaS实现机制

image-20221005113246238

3.4 物理云栈OpenStack

  • OpenStack是一个管理云计算中计算、存储和网络,甚至是应用的通用平台,其提供Web界面、命令行工具和应用程序接口(API)等使用接口。
  • 官方描述
    • The Most Widely Deployed Open Source Cloud Software in the World
    • OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.
  • 平台管理员
    • 位于各厂商特定资源之上的云计算资源管理层
  • 开发者
    • 通过其为应用提供基础设施和相应软件依赖
    • 云编排平台:基于应用模板部署可扩展应用
  • 最终用户
    • 每一个最终用户被定义为一个租户
    • 为租户提供自助服务的基础设施和应用管理系统

image-20221005113731447

  • 本质上OpenStack通过抽象和一个通用的API接口控制不同厂商提供的硬件和软件资源,是对计算系统的更高层次的抽象。

    image-20221005113815800

3.5 逻辑云体

  • 云栈是从纵向角度看云计算的整体架构,那么云体则主要是从横向角度看其架构模式
  • 类比传统操作系统横向切面:运行时环境 + 应用本身(程序+数据)
    • 环境:进程/线程/内存管理 + 文件系统 + 进程间通信/网络
    • 云应用程序
      • 类似传统应用
    • 云运行时环境
      • image-20221005114052410

image-20221005114130957

3.6 物理云体云数据中心

image-20221005114253518

  • 传统数据中心暴露的问题

    • 过多的机器
    • 机器利用率过低
    • 应用迁移太困难
    • 存储需求增长太快
  • 软件定义的数据中心

  • 重新重视虚拟化,以提高资源利用率

    • 不仅应用到计算节点
    • 复制到存储、网络、安全等方方面面
    • 软件定义计算:计算节点的虚拟化:虚拟机成为计算调度和管理的单位,不中断服务的前提下动态迁移。
    • 软件定义存储:分离管理接口与数据读写;统一的管理接口与上层管理软件交互;数据读写可以兼容各种不同的链接方式。
    • 软件定义网络:数据平面(数据转发)和控制平面(转发表的设置等)分离;集中控制,分布式转发。

    image-20221005114453737