EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

云计算-02-云计算架构

面各项服务的计算架构

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

共性:基于无状态连接【http 请求】和基于服务的访问【而非过程调用】

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
  • 服务总线层:即中间件层,封装计算服务、数据存储、消息传递;分离用户与虚拟化层、连接用户与 Web 服务层
  • 客户机用户界面:Web 门户,将各种服务混搭集成在一个页面;基于 Ajax,Javascript,趋势是使用功能完善的组件;如 JavaBeans/Applets,Silvedight/.NET 等;可下载和安装在客户机上

云应用程序的结构

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

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

云计算逻辑架构

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

云计算:是利用云体和云平台所进行的计算或处理——云计算可以在云体上直接进行,也可以在云平台上进行。无论在哪个层面开展,只要符合“按量计费、资源可伸缩”就是云计算。

  • 云存储、云服务、在云上运行自己的软件或算法,都是云计算。
  • 云计算是人们利用云体和云平台所从事的活动。

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

逻辑云栈

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

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

  • 每一层都提供一种抽象,最下为物理硬件层
  • 每往上一层,易用性就增加一分
  • 到底应该分几层没有明确的规定或准则
  • 不同的厂商有不同分法:三层、四层、五层…

云栈的三层模式

  • 基础设施即服务层:不仅包括硬件设施,还包括虚拟化,因为各种硬件规格、性能、质量不统一,无法在其上直接建造云平台。虚拟化可以将各种硬件变为统一的标准件。
  • 平台即服务层:在虚拟化的 IT 资源上构建起应用程序的运行环境,对外提供的产品包括计算环境、云存储库、通信机制、控制调度机制,统称为云计算平台或云解决方案栈。消费的是云基础设施服务,支持的是上层的云应用程序。
  • 应用程序层-软件即服务层:
    • 基于网络进行远程访问的商用软件
    • 集中式管理,而非分散在每个用户站点
    • 单个实例多个租户架构——一对多模型
    • 按照用量计费(实际应用中按月或其他时间周期计费)

从管理角度看,与云栈分层架构对应的是云计算技术体系结构——如何实现三层服务。不同供应商提供了不同的解决方案,没有统一的技术体系结构。综合不同厂商,构造如下参考体系结构:

云计算技术体系结构

各层内涵

IaaS 实现机制

用户交互接口向应用以 Web Services 方式提供访问接口,获取用户需求。

服务目录是用户可以访问的服务清单。

系统管理模块负责管理和分配所有可用的资源,其核心是负载均衡。

配置工具负责在分配的节点上准备任务运行环境。

监视统计模块负责监视节点的运行状态,并完成用户使用节点情况的统计。

物理云栈: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.

平台管理员:位于各厂商特定资源之上的云计算资源管理层

开发者:通过其为应用提供基础设施和相应软件依赖;云编排平台:基于应用模板部署可扩展应用

最终用户:每一个最终用户被定义为一个租户,为租户提供自助服务的基础设施和应用管理系统

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

逻辑云体

云栈是从纵向角度看云计算的整体架构,那么云体则主要是从横向角度看其架构模式

类比传统操作系统横向切面:运行时环境 + 应用本身(程序+数据)

  • 环境:进程/线程/内存管理 + 文件系统 + 进程间通信/网络
  • 云应用程序:类似传统应用
  • 云运行时环境:计算资源(服务器或 CPU + 本地存储)、持久存储、通信(消息队列+网络)

s

物理云体:云数据中心

数据中心是数据集中存储、计算、交换的中心,其发展与计算机(包括存储和网络设备)的发展紧密联系在一起。

  • 20 世纪 60 年代:商用计算机应用推广, IBM Mainframe 系列主机,几十吨、占地数百平方米主机机房:只有一台主机,没有网络、专门的存储节点
  • 20 世纪 80 年代:随着大规模集成电路的发展(我国台湾),微型计算机开始出现与普及,数据存储和计算开始了分散的趋势
  • 90 年代大量微型机开始扮演客户端角色,大型任务如数据库查询被迁移到服务器端,著名的客户端服务器模式大行其道,推动了数据中心发展
  • 21 世纪随着互联网成为发展主角,几乎所有公司都需要接入互联网并持续运行业务;但不需要每个公司都有一套完备的基础设施,于是 IDC(Internet Data Center)应运而生

  • 传统数据中心暴露的问题:
    • 过多的机器
    • 机器利用率过低
    • 应用迁移太困难
    • 存储需求增长太快
  • 软件定义的数据中心
  • 重新重视虚拟化,以提高资源利用率
    • 不仅应用到计算节点,复制到存储、网络、安全等方方面面
    • 软件定义计算:计算节点的虚拟化:虚拟机成为计算调度和管理的单位,不中断服务的前提下动态迁移。
    • 软件定义存储:分离管理接口与数据读写;统一的管理接口与上层管理软件交互;数据读写可以兼容各种不同的链接方式。
    • 软件定义网络:数据平面(数据转发)和控制平面(转发表的设置等)分离;集中控制,分布式转发。