logo资料库

阿里云-飞天开放平台技术白皮书.pdf

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
打造数据分享第一平台 飞天开放平台技术白皮书 2013/03/08
打造数据分享第一平台 目录 1. 概述........................................................................................................................................... 1 2. 体系架构 ........................................................................................................................... 1 飞天内核 ........................................................................................................................... 2 3. 分布式系统底层服务 ....................................................................................................... 3 4. 4.1. 协调服务(女娲) ............................................................................................... 3 4.2. 远程过程调用(夸父) ....................................................................................... 4 4.3. 安全管理(钟馗) ............................................................................................... 5 4.4. 分布式文件系统(盘古) ................................................................................... 5 4.5. 资源管理和任务调度(伏羲) ........................................................................... 7 4.5.1. 在线服务调度 ................................................................................................... 8 4.5.2. 离线任务调度 ................................................................................................... 8 4.5.3. 集群监控和部署 ............................................................................................... 9 4.5.4. 集群监控(神农) ........................................................................................... 9 4.5.5. 集群部署(大禹) ......................................................................................... 10 I
飞天开放平台技术白皮书 打造数据分享第一平台 1. 概述 阿里云计算为中国第一大公有云平台,云计算产品服务完全基于自主知识产 权,先后获 85 项国家技术专利,获得国家发改委的云计算专项资金支持。 阿里云飞天开放平台是在数据中心的大规模 Linux 集群之上构建的一套综 合性的软硬件系统,将数以千计的服务器联成一台“超级计算机”,并且将这台 超级计算机的存储资源和计算资源,以公共服务的方式,输送给互联网上的用户 或者应用系统。 阿里云致力于打造云计算的基础服务平台,注重为中小企业提供大规模、低 成本的云计算服务。阿里云的目标是通过构建飞天这个支持多种不同业务类型的 公有云计算平台,帮助中小企业在云服务上建立自己的网站和处理自己的业务流 程,帮助开发者向云端开发模式转变,用方便、低廉的方式让互联网服务全面融 入人们的生活,将网络经济模式带入移动互联网,构建出以云计算为基础的全新 互联网生态链。在此基础上,实现阿里云成为互联网数据分享第一平台的目标。 2. 体系架构 如图 2.1 所示是飞天的体系架构图。整个飞天平台包括飞天内核(图 2.1 中黄色组件)和飞天开放服务(图 2.1 中蓝色组件)两大组成部分。飞天内核为 上层的飞天开放服务提供存储、计算和调度等方面的底层支持,对应于图 2.1 中的协调服务、远程过程调用、安全管理、资源管理、分布式文件系统、任务调 度、集群部署和集群监控模块。 飞天开放服务为用户应用程序提供了存储和计算两方面的接口和服务,包括 弹性计算服务(Elastic Compute Service,简称 ECS)、开放存储服务(Open Storage Service,简称 OSS)、开放结构化数据服务(Open Table Service,简 称 OTS)、关系型数据库服务(Relational Database Service,简称 RDS)和开 放数据处理服务(Open Data Processing Service,简称 ODPS),并基于弹性计 算服务提供了云服务引擎(Aliyun Cloud Engine,简称 ACE)作为第三方应用 1
开发和 Web 应用运行和托管的平台。 打造数据分享第一平台 飞天平台 飞天内核 飞天内核包含的模块可以分为以下几部分:  分布式系统底层服务:提供分布式环境下所需要的协调服务、远程过程 调用、安全管理和资源管理的服务。这些底层服务为上层的分布式文件 系统、任务调度等模块提供支持。  分布式文件系统:提供一个海量的、可靠的、可扩展的数据存储服务, 将集群中各个节点的存储能力聚集起来,并能够自动屏蔽软硬件故障, 为用户提供不间断的数据访问服务。支持增量扩容和数据的自动平衡, 提供类似于 POSIX 的用户空间文件访问 API,支持随机读写和追加写的 操作。  任务调度:为集群系统中的任务提供调度服务,同时支持强调响应速度 的在线服务(Online Service)和强调处理数据吞吐量的离线任务(Batch Processing Job)。自动检测系统中故障和热点,通过错误重试、针对 长尾作业并发备份作业等方式,保证作业稳定可靠地完成。  集群监控和部署:对集群的状态和上层应用服务的运行状态和性能指标 进行监控,对异常事件产生警报和记录;为运维人员提供整个飞天平台 以及上层应用的部署和配置管理,支持在线集群扩容、缩容和应用服务 的在线升级。 2
打造数据分享第一平台 3. 分布式系统底层服务 3.1. 协调服务(女娲) 女娲(Nuwa)系统为飞天提供高可用的协调服务(Coordination Service), 是构建各类分布式应用的核心服务,它的作用是采用类似文件系统的树形命名空 间来让分布式进程互相协同工作。例如,当集群变更导致特定的服务被迫改变物 理运行位置时,如服务器或者网络故障、配置调整或者扩容时,借助女娲可以使 其他程序快速定位到该服务新的接入点,从而保证了整个平台的高可靠性和高可 用性。 女娲基于类 Paxos 协议[15],由多个女娲 Server 以类似文件系统的树形结 构存储数据,提供高可用、高并发用户请求的处理能力。 女娲的目录表示一个包含文件的集合。与 Unix 中的文件路径一样,女娲中 路径是以“/”分割的,根目录(Root entry)的名字是“/”,所有目录的名字 都是以“/”结尾的。与 Unix 文件路径不一样之处在于:女娲中所有文件或目录 都必须使用从根目录开始的绝对路径。由于女娲系统的设计目的是提供协调服 务,而不是存储大量数据的,所以每个文件的内容(Value)的大小被限制在 1MB 以内。在女娲系统中,每个文件或目录都保存有创建者的信息。一旦某个路径被 用户创建,其他用户就可以访问和修改这个路径的值(即文件内容或目录包含的 文件名)。 女娲支持 Publish/Subscribe 模式,其中一个发布者、多个订阅者(One Publisher/Many Subscriber)的模式提供了基本的订阅功能;另外,还可用通 过多个发布者、多个订阅者(Many Publisher/Many Subscriber)的方式提供分 布式选举(Distributed Election)和分布式锁的功能。 再举一个使用女娲来实现负载均衡的例子:提供某一服务的多个节点,在服 务启动的时候在女娲系统的同一目录下创建文件,例如,server1 创建文件 “nuwa://cluster/myservice/server1”,server2 在同一目录下创建 “nuwa://cluster/myservice/server2”。当客户端使用远程过程调用的时候, 首先列举女娲服务中“nuwa://cluster/myservice”目录下的文件,这样就可以 获得 server1 和 server2,客户端随后可以从中选择一个节点发出自己的请求, 3
打造数据分享第一平台 从而实现负载均衡。 3.2. 远程过程调用(夸父) 在分布式系统中,不同计算机之间只能通过消息交换的方式进行通信。显式 的消息通信必须通过 Socket 接口编程,而远程过程调用(Remote Procedure Call,简称 RPC[9])可以隐藏显式的消息交换,使得程序员可以像调用本地函 数一样来调用远程的服务。 夸父(Kuafu)是飞天内核中负责网络通信的模块,它提供了一个 RPC 的接 口,简化编写基于网络的分布式应用。夸父的设计目标是提供高可用(7 x 24 小时)、大吞吐量(Gigabyte)、高效率、易用(简明 API、多种协议和编程接口) 的 RPC 服务。 RPC 客户端(RPC Client)通过 URI 指定请求需要发送的 RPC 服 务端(RPC Server)的地址,目前夸父支持两种协议形式。  TCP:例如,tcp://fooserver01:9000  Nuwa:例如,nuwa://nuwa01/FooServer 与用流(stream)传输的 TCP 通信相比,夸父通信是以消息(Message)为 单位的,支持多种类型的消息对象,包括标准字符串 std::string 和基于 td::map 实现的若干 string 键值对。 夸父 RPC 同时支持异步(asynchronous)和同步(synchronous)的远程过 程调用形式。  异步调用:RPC 函数调用时不等接收到结果就会立即返回;用户必须通 过显式调用接收函数取得请求结果。  同步调用:RPC 函数调用时会等待,直到接收到结果才返回。在实现中, 同步调用是通过封装异步调用来实现的。 在夸父的实现中,客户端程序通过 Unix Domain Socket 与本机上的一个夸 父代理(Kuafu Proxy)连接,不同计算机之间的夸父代理会建立一个 TCP 连接。 这样做的好处是可以更高效地使用网络带宽,系统可以支持上千台计算机之间的 互联需求。此外,夸父利用女娲来实现负载均衡;对大块数据的传输做了优化; 与 TCP 类似,夸父代理之间还实现了发送端和接收端的流控(Flow Control)机 制。 4
打造数据分享第一平台 3.3. 安全管理(钟馗) 钟馗(Zhongkui)是飞天内核中负责安全管理的模块,它提供了以用户为单 位的身份认证和授权,以及对集群数据资源和服务进行的访问控制。  用户的身份认证(Authentication)是基于密钥机制的。  用户对资源的访问控制是基于权能(Capability)机制进行授权 (Authorization)的。 Capability 是用于访问控制的一种数据结构,它定义了对一个或多个指定 的资源(如目录、文件、表等)所具有的访问权限。用户访问飞天系统的资源时 必须持有 Capability,否则即视为非法。打个比方,如果把 Capability 理解为 地铁票,乘坐地铁(对地铁的一种访问方式)的时候必须要有 Capability,即 地铁票。 密钥对是基于公开密钥方法的,包括一个私钥和相对应的公钥。在飞天系统 中,密钥对用于数字签名服务,以保证 Capability 的不可伪造。换句话说,私 钥用于产生数字签名(如签发 Capability),公钥用于验证数字签名的有效性(如 验证签发过的 Capability 的有效性)。 考虑到网络通信时任何通信节点都是不可信的,所以即使是飞天自身模块内 部之间的通信也同样是需要认证和授权的,而且验证的机制也完全一样。 3.4. 分布式文件系统(盘古) 盘古(Pangu)是一个分布式文件系统,盘古的设计目标是将大量通用机器 的存储资源聚合在一起,为用户提供大规模、高可靠、高可用、高吞吐量和可扩 展的存储服务,是飞天内核中的一个重要组成部分。  大规模:能够支持数十 PB 量级的存储大小(1PB = 1000TB),总文件数 量达到亿量级。  数据高可靠性:保证数据和元数据(Metadata)是持久保存并能够正确 访问的,保证所有数据存储在处于不同机架的多个节点上面(通常设置 为 3)。即使集群中的部分节点出现硬件和软件故障,系统能够检测到故 障并自动进行数据的备份和迁移,保证数据的安全存在。 5
打造数据分享第一平台  服务高可用性:保证用户能够不中断地访问数据,降低系统的不可服务 时间。即使出现软硬件的故障、异常和系统升级等情况,服务仍可正常 访问。  高吞吐量:运行时系统 I/O 吞吐量能够随机器规模线性增长,保证响应 时间。  高可扩展性:保证系统的容量能够通过增加机器的方式得到自动扩展, 下线机器存储的数据能够自动迁移到新加入的节点上。 同时,盘古也能很好地支持在线应用的低延时需求。在盘古系统中,文件系 统的元数据存储在多个主服务器(Master)上,文件内容存储在大量的块服务器 (Chunk Server)上。客户端程序在使用盘古系统时,首先从主服务器获取元数 据信息(包括接下来与哪些块服务器交互),然后在块服务器上直接进行数据操 作。由于元数据信息很小,大量的数据交互是客户端直接与块服务器进行的,因 此盘古采用少量的主服务器来管理元数据,并使用 Paxos 协议[15]保证元数据的 一致性。此外,块大小被设置为 64MB,进一步减少了元数据的大小,因此可以 将元数据全部放到内存里,从而使得主服务器能够处理大量的并发请求。 块服务器负责存储大小为 64MB 的数据块。在向文件写入数据之前,客户端 将建立到 3 个块服务器的连接,客户向主副本(Replica)写入数据以后,由主 副本负责向其他副本发送数据。与直接由客户端向三个副本写入数据相比,这样 可以减少客户端的网络带宽使用。块副本在放置的时候,为保证数据可用性和最 大化地使用网络带宽,会将副本放置在不同机架上,并优先考虑磁盘利用率低的 机器。当硬件故障或数据不可用造成数据块的副本数目达不到 3 份的时候,数据 块会被重新复制。为保证数据的完整性,每块数据在写入时会同时计算一个校验 值,与数据同时写入磁盘。当读取数据块的时候,块服务器会再次计算校验值与 之前存入的值是否相同,如果不同就说明数据出现了错误,需要从其他副本重新 读取数据。 在线应用对盘古提出了与离线应用不同的挑战:OSS、OTS 要求低时延数据 读写,ECS 在要求低时延的同时还需要具备随机写的能力。针对这些需求,盘古 实现了事务日志文件和随机访问文件,用以支撑在线应用。其中,日志文件通过 6
分享到:
收藏