云计算架构

计算架构和云计算架构的二维视角

云平台操作系统

  • IT 作为服务:放弃拥有资产;IT资产集中,需要新的技术和新的商业模式支持。
  • 一项系统工程:一种针对大规模系统的科学管理办法,应对资源组织和管理过程中各种问题。
  • 云数据中心:将所有联网的计算和存储资源聚集起来形成规模效应。
  • 云的工作负载模式:时开时停模式,用量迅速增长模式,瞬时暴涨模式,周期性增长模式等。

计算架构及演化

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

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

  • 中央集权架构:计算机刚出现时候的首选,所有计算及计算资源、业务逻辑都集中于一台主机
  • 客户机/服务器架构
    • 客户端:承载少量计算任务和所有 IO 任务
    • 服务端:承载主要计算任务
    • 优点:关注点分离,简化软件复杂度、编程模式
    • 缺点:持久链接,系统伸缩能力受限
  • 中间层架构 – 简化和提升伸缩能力
    • 将业务逻辑和数据服务分别放在两个服务器上
    • 客户机到中间件为无状态的非持久链接 – 提升架构弹性
  • 浏览器/服务器架构
    • 对客户机、中间层架构的扩展 – 客户端和中间层均改动
    • 客户端:负载进一步缩减,仅显示和运行基于浏览器的脚本程序
    • 服务器:Web 服务器层屏蔽各种中间件的差异,提供通用的用户访问界面
    • 扩展性高:对客户机性能无要求
    • 对网络性能要求高
  • C/S 和 B/S 混合架构
    • 没有一种架构能够适用于所有场景
    • 有些服务需要持久的链接(内部用户)
    • 有些仅通过非持久链接即可(外部用户)
  • 面向服务的架构(Service-oriented Architecture)
    • 每个程序只做本职工作,将服务暴露出来供其他程序使用
    • 多个程序通过一个统一的界面协调工作 – 控制复杂性,更容易管理
    • 区别于“分布式对象”
      • Java:Java 对象,RMI(Remote Method Invocation,远程方法调用)
      • CORBA:CORBA 分布式对象,IDL(Interface Definition Language,接口定义语言)
      • 通过RPC(Remote Procedure Call,远程过程调用)连接

面向服务的架构

云计算逻辑架构

  • 从不同的角度看,云计算架构的复杂性有一定的差异
  • 最易于理解的二维视角:基础设施 + 应用程序;两者分别视为:前端(呈现给用户的界面)+ 后端(云组件)
  • 基础架构 – 云内部,后端
    • 硬件:服务器、存储器、网络交换机等
    • 管理软件:服务的高可用性、可恢复性,数据一致性,应用伸缩性、可预测性,云安全等
  • 应用程序 – 云对外,前端
    • 并发性、协调性、容错性、开放的 API 格式、开放的数据结构、承载数据密集型计算

云架构的二维视图

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

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

云计算架构的进一步分层结构

Note: 有了 Web 服务层其实客户就可以方便快捷的使用云平台提供的服务,服务总线层和客户机用户界面其实是为了更加方便用户的使用,服务总线层可以看作是连接用户和 Web 服务层的,客户机用户界面可以看作是 Web 服务层的一个替代品,用于让用户有更好的体验(无论是从 Terminal or GUI 层面上)。 – 个人看法

云应用程序结构

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

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

应用上云并不简单,需要根据云架构的特征调整应用的部署方式

云应用程序结构

云栈

又称为云平台,是在云上建造的运行环境。它能够支持应用程序的发布、运行、监控、调度、伸缩,并为应用程序提供辅助服务机制,如访问控制、权限管理等。

云体

  • 是云计算的物质基础,是云计算使用的资源集合,是构成云计算的软硬件环境,例如网络、服务器、存储器、交换机等。广义的云体包括数据中心机器辅助设施如电力、空调、机架、冷却等系统。
  • 目前可以认为:云体 就是 数据中心

云计算技术体系结构

云计算

  • 是利用云体和云平台所进行的计算或处理——云计算可以在云体上直接进行,也可以在云平台上进行。无论在哪个层面开展,只要符合“按量计费、资源可伸缩”就是云计算。
  • 云存储、云服务、在云上运行自己的软件或者算法,都是云计算
  • 云计算是人们利用云体和云平台所从事的活动。

物理云体 – 云数据中心

虚拟化技术

物理云栈 – OpenStack

文章作者: ZY
文章链接: https://zyinnju.com/2022/09/26/云计算架构/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZY in NJU