实例介绍
阿里云计算为中国第一大公有云平台,云计算产品服务完全基于自主知识产 权,先后获 85 项国家技术专利,获得国家发改委的云计算专项资金支持。 阿里云飞天开放平台是在数据中心的大规模 Linux 集群之上构建的一套综 合性的软硬件系统,将数以千计的服务器联成一台“超级计算机”,并且将这台 超级计算机的存储资源和计算资源,以公共服务的方式,输送给互联网上的用户 或者应用系统。 阿里云致力于打造云计算的基础服务平台,注重为中小企业提供大规模、低 成本的云计算服务。阿里云的目标是通过构建飞天这个支持多种不同业务类型的 公有云计算平台,帮助中小企业在云服务上建立自己的网站和处理自己的业务流
阿里云 allyn. com 打造数据分享第一平台 飞天开放平台技术白皮书 1.概述 阿里云计算为中国第一大公有云平台,云计算产品服务完全基于自主知识产 权,先后获85项国家技术专利,获得国家发改委的云计算专项资金支持。 阿里云飞天开放平台是在数据中心的大规模 Linux集群之上构建的一套综 合性的软硬件系统,将数以千讣的服务器联成一台“超级讣算机”,并且将这台 超级计算机的存储资源和计算瓷源,以公共服务的方式,输送给互联网上的用户 或者应川系统 阿里云致力于打造云计算的基础服务平台,注重为中小企业提供大规模、低 成本的云计算服务。阿里云的目标是通过构建飞天这个支持多种不同业务类型的 公有云计算平台,帮助中小企业在云服务上建立自己的网站和处理自己的业务流 程,帮助开发者向云端开发模式转变,用方便、低廉的方式让互联网服务全面融 入人们的生活,将网络经济模式带入移动互联网,构建出以云计算为基础的全新 互联网生态链。在此基础上,实现阿里云成为互联网数据分享第一平台的目标。 2.体系架构 如图2.1所示是飞天的体系架构图。整个飞天平台包括飞天内核(图2 中黄色组件)和飞天开放服务(图2.1中蓝色组件)两大组成部分。飞天内核为 上层的飞天开放服务提供存储、计算和调度等方面的底层支持,对应于图2.1 中的协调服务、远程过程调用、安全管理、资源管理、分布式文件系统、任务调 度、集群部署和集群监控模块 飞天开放服务为用户应用程序提供了存储和计算两方面的接口和服务,包括 弹性计算服务( Elastic Compute service,简称ECS)、开放存储服务(Open Storage service,简称0SS)、开放结构化数据服务( Open table service,简 称0TS)、关系型数据库服务( Relational database service,简称RDS)和开 放数据处理服务( pen Data processing Service,简称ODPS),并基于弹性讣 算服务提供了云服务引擎( Aliyun cloud engine,简称ACE)作为第三方应用 阿里云 allyn. com 打造数据分享第一平台 开发和Web应用运行和托管的平台。 服务引擎 ACE 弹性计算 关系型数 开放存储 开放构化 开放数据 据库服务 数括服务 处理服务 RDS ODPS 分布式立科系统(盡白) 任务调度(伏〕 远程过程调用【夸父 安全管理 钟馗) 分布协同服(女赐 (伏) Linux集群 数据 飞天平台 飞天内核 飞大内核包含的模块可以分为以下儿部分: 分布式系统底层服务:提供分布式环境下所需要的协调服务、远程过程 调用、安全管理和资源管理的服务。这些底层服务为上层的分布式文件 系统、任务调度等模块提供支持。 分布式文件系统:提供一个海量的、可靠的、可扩展的数据存储服务, 将集群中各个节点的存储能力聚集起来,并能够自动屏蔽软硬件故障, 为用户提供不问断的数据访问服务。支持增量扩容和数据的自动平衡, 提供类似于P0sSIX的用户空间文件访问API,攴持随机读写和追加写的 操作 仼务调度:为集群系统中的任务提供调度服务,同时支持强调响应速虔 的在线服务( Online service)和强调处理数据吞吐量的离线任务( Balch Processing job)。自动检测系统中故障和热点,通过错误重试、针对 长尾作业并发备份作业等方式,保证作业稳定可靠地完成。 集群监控和部署:对集群的状态和上层应川服务的运行状态和性能指标 进行监控,对异常事件产生警报和记录;为运维人员提供整个飞天平台 以及上层应用的部署和配置管理,支持在线集群扩容、缩容和应用服务 的在线升级。 阿里云 allyn. com 打造数据分享第一平台 3.分布式系统底层服务 31.协调服务(女娲) 女妫(Nuwa)系统为飞天提供高可用的协调服务( Coordination service), 是构建各类分布式应用的核心服务,它的作用是采用类似文件系统的树形命名空 来让分布式进程互相协同工作。例如,当集群变更导致特定的服务被迫改变物 理运行位置时,如服务器或者网终故障、配置调整或者扩容时,借助女可以使 其他程序快速定位到该服务新的接入点,从而保证了整个平台的高可靠性和髙可 用性。 女娲基于类 Paxos协议[15],由多个女娲 Server以类似文件系统的树形结 构存储数据,提供高可用、高并发用户请求的处理能力。 女娲的目录表小一个包含文件的集合。与Unix中的文件路径一样,女娲中 路径是以“/”分割的,根目录( Root entry)的名字是“/”,所有目录的名字 都是以“/”结尾的。与Unix文件路径不一样之处在于:女娲中所有文件或日录 都必须使用从根目录开始的绝对路径。由于女娲系统的设计目的是提供协调服 务,而不是存储大量数据的,所以每个文件的内容( Value)的大小被限制在IMB 以内。在女娲系统中,每个文件或目录都保存有创建者的信息。一旦某个路径被 用户创建,其他用户就可以访问和修改这个路径的值(即文件内容或目录包含的 文件名)。 女娲攴持 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,客户端随后可以从中选择一个节点发出自己的请求 阿里云 allyn. com 打造数据分享第一平台 从而实现负载均衡。 32.远程过程调用(夸父) 在分布式系统中,不同计算机之间只能通过消息交换的方式进行通信。显式 的消息通信必须通过 Socket接口编程,而远程过程调用( Remote procedure Call,简称RPC[9])可以隐藏显式的消息交换,使得程序员可以像调用本地函 数一样来调用远程的服务 夸父( Kuafu)是飞天内核中负责网络通信的模块,它提供了一个RPC的接 ,简化编写基于网络的分布式应用。夸父的设计目标是提供高可用(7x24 小时)、大吞吐量( Gigabyte)、高效率、易用(简明APⅠ、多种协议和编程接口) 的RPC服务。RPC客户端( RPC CLient)通过URI指定请求需要发送的RPC服 务端( RPC Server)的地址,目前夸父支持两种协议形式。 TCP:例如,tep:// fooserver01:9000 ●Ⅶuwa:例如,nuwa:/nuwa01/ Fooserver 与用流( stream)传输的TCP通信相比,夸父通信是以消息( Message)为 单位的,支持多种类型的消息对象,包括标准字符串std:: string和基于td:map 实现的若干 string键值对。 夸父RPC同时攴持异步( asynchronous)和同步( synchronous)的远程过 程调用形式。 异步调用:RPC函数调用吋不等接收到结果就会立即返回;用户必须通 过显式调用接收函数取得请求结果。 ●同步调用:RPC函数调用时会等待,直到接收到结果才返回。在实现中, 同步调用是通过封装异步调用来实现的。 在夸父的实现中,客户端程序通过 Unix domain socket与本机上的一个夸 父代理( Kuafu proxy)连接,不同计算机之间的夸父代理会建立一个TCP连接 这样做的好处是可以更高效地使用网络带宽,系统可以支持上千台计算机之间的 互联需求。此外,夸父利用女娲来实现负载均衡;对大块数据的传输做了优化 与TCP类似,夸父代理之问还实现了发送端和接收端的流控( Flow Coηtrol)机 制 阿里云 allyn. com 打造数据分享第一平台 33.安全管理(钟馗) 钟馗( Zhongkui)是飞天内核中负责安全管理的模块,它提供了以用户为单 位的身份认证和授权,以及对集群数据资源和服务进行的访问控制。 用户的身份认证( Authentication)是于密钥机制的。 用户对资源的访问控制是基于权能( Capability)机制进行授权 ( Authorization)的 Capability是用于访问控制的一种数据结构,它定义∫对一个或多个指定 的资源(如目录、文件、表等)所具有的访问权限。用户访问飞天系统的资源时 必须持有 Capability,否则即视为非法。打个比方,如果把 Capability理解为 地铁票,乘坐地铁(对地铁的一种访问方式)的时候必须要有 Capability,即 地铁票。 密钥对是基于公开密钥方法的,包括一个私钥和相对应的公钥。在飞天系统 中,密钥对用于数字签名服务,以保证 Capability的不可伪造。换句话说,私 钥用于生数字签名(如签发 Capability),公钥用于验证数字签名的有效性(如 验证签发过的 Capability的有效性) 考虑到网络通信时任何通信节点都是不可信的,所以即使是飞大自身模块内 部之间的通信也同样是需要认证和授权的,而且验证的机制也完全一样。 34.分布式文件系统(盘古) 盘古( Pangu)是一个分布式文件系统,盘古的设计目标是将大量通用机器 的存储资源聚合在一起,为用户提供大规模、高可靠、高可用、高吞吐量和冋扩 展的存储服务,是飞天内核中的一个重要组成部分。 大规模:能够支持数十PB量级的存储大小(1PB-1000T3),总文件数 量达到亿量级。 数据高可靠性:保证数捃和元数据( Metadata)是持久保存并能够正确 访问的,保证所有数据存储在处于不同机架的多个节点上面(通常设置 为3)。即使集群中的部分节点岀现硬件和软件故障,系统能够检测到故 障并自动进行数据的备份和迁移,保证数据的纹全存在 5 阿里云 allyn. com 打造数据分享第一平台 服务高可用性:保证用户能够不中断地访问数据,降低系统的不可服务 时间。即使岀现软硬件的故障、异常和系统升级等情况,服务仍可正常 访问。 髙昋吐量:运行时系统Ⅰ/0吞吐量能够随机器规模线性增长,保证响应 时间 高可扩展性:保证系统的容量能够通过增加机器的方式得到白动扩展, 卜线札器存储的数据能够自动迁移到新加入的节点上 同时,盘古也能很好地支持在线应用的低延时需求。在盘古系统中,文件系 统的元数据存储在多个主服务器( Master)上,文件内容存储在人量的块服务器 ( Chunk server)上。客户端程序在使用盘古系统时,首先从主服务器获取元数 据信息(包括接下来与哪些块服务器交互),然后在块服务器上直接进行数据操 作。由于元数据信息很小,大量的数据交互是客户端直接与块服务器进行的,因 此盘占采用少量的主服务器来管理元数据,并使用 Paxos协议[15]保证元数据的 致性。此外,块大小被设置为64MB,进一步减少了元数据的大小,因此可以 将元数据全部放到内存里,从而使得主服务器能够处理大量的并发请求 块服务器负责存储大小为64B的数据块。在向文件写入数据之前,客户端 将建立到3个块服务器的连接,客户向主副本( Replica)写入数据以后,由主 副本负责向其他副本发送数据。与直接由客户端向三个副本写入数据相比,这样 可以减少客户端的网终带宽使用。块副本在放置的时候,为保证数据可用性和最 大化地使用网络带宽,会将副本放置在不同机架上,并优先考虑磁盘利用率低的 杋器。当硬件故障或数据不可用造成数据块的副本数目达不到3份的时候,数据 块会被重新复制。为保证数据的完整性,每块数据在写入时会同时计算一个校验 值,与数据同时写入磁盘。当读取数据块的时候,块服务器会再次计算恔验值与 之前存入的值是否相同,如果不同就说明数据出现了错误,需要从其他副木重新 读取数据。 在线应用对盘古提出了与离线应用不同的挑战:OSS、OTS要求低吋延数据 读写,ECS在要求低吋延的同吋还需要具备随机写的能力。针对这些需求,盘古 实现了事务日志文件和随机访问文件,用以支撑在线应用。其中,日志文件通过 阿里云 allyn. com 打造数据分享第一平台 多种方法对时延进行了优化,包括设置更高的优先级、由客户端直接写多份拷贝 而不是用传统的流水线方式、写入成功,不经过 Master确认等。随机访问文件 则允许用户随机读写,同时也应用了类似日志文件的时延优化技术。 35.资源管理和任务调度(伏羲) 伏羲(Fuxi)是飞天内核中负责资源管理和任务调度的模块,同时也为应用 开发提供了一套编程基础框架。伏羲同时支持强调响应速度的在线服务和强调处 理数据吞吐量的离线任务。在伏羲中,这两类应用分别简称为 Service和Job 在资源管理方面,伏羲主要负责调度和分配集群的存储、计算等资源给上层 应用;管理运行在集群节点上任务的生命周期;在多用户运行环境中,支持讣算 额度、访问控制、作业优先级和资源抢占,达到在保障公平的前提下,有效地共 享集群资源。 在任务调度方面,伏羲囿向海量数据处理和大规模计算类型的复杂应用,提 供了一个数据驱动的多级流水线并行计算框架,在表述能力上兼容 MapReduce l12」、Map- Reduce-erge等多种编程模式;自动检测故障和系统热点, 重试失败任务,保证作业稳定可靠运行完成;具有高可扩展性,能够根据数据分 布优化网终开销。 伏羲中应用了“ Master/ Worker”工作模型。其中, Master负责进行资源中 请和调度、为 Worker创建工作计划(Plan)并监控 Worker的生命周期, Worker 负责执行具体的工作计划并及时向 Master汇报工作状态( Status)。此外, Master 支持多级模式,即一个 Master可以隶属于另外一个 Master之下 伏羲 Master负责整个集样资源管理和调度,处理Job/ Service启动、停止 Failover等生命周期的维护。同时伏羲 Master支持多用户额度配冒、 Job/ Service的多优先级设置和动态资源抢占逻辑,可以说是飞天的“大脑” 伏羲对资源调度是多维度的,可以根据CPU、内存等系统资源,以及应用自定义 的虚拟资源对整个机群进行资源分配和调度 土伯(Tubo)是部署在每台由伏羲管理的机器上的后台进程,负责收集并向 伏羲 Master报告本机的状态,包括系统资源的消耗、 Master或 Worker进程的 运行、等待、完成和失败事件,并根据伏羲 Master或者Job/ Service master 阿里云 allyn. com 打造数据分享第一平台 的指令,启动或杀死指定的 Master或 Worker进程。同时土伯还负责对计算机健 康状况进行监控,对异常 Worker(比如内存超用)进行及时的清理和汇报 对于在线服务( Service),由伏羲 Master负责 Service master的启动与状 态监控,处理相应 Service master的资源申请请求。 Service master负责管理 Service Worker的任务分配、生命周期管理以及 Failover的管理。 对于离线任务(Job),伏羲 Master负责 Job Master的启动与状态监控,处 理相应 Job master的资源申请凊求。 Job master根据用户输入的Job描述文件, 将仼务分解成一个或以上的Task,每个Task的资源申请、 Task Worker的调度 和生命周期维护由 Task master负责 3.5.1.在线服务调度 在飞天内核中,每个 Service都有一个 Service master和多个不同角色 (Role)的 Service worker,它们一起协同工作来完成整个服务的功能。 Service Master是伏羲 Master管理下的子 Master( Child master),它负责这个 Service 相关的资源申请、状态维扩以及故障恢复,并定期与伏羲 Master进行交互,确 保整个 Service正确、正常地运行。每个 Service Worker的角色和执行的动作, 都是由用户来定义的 每个 Service Worker负责处理一个到多个数据分片( Partition),同一时 刻一个分片只会被分型到一个 Service Worker处理。将数据分割成为互不相关 的分片,然后将不同分片给不同 Service worker来处理是构建大规模应川服务 的关键特性。数据分片是一个抽象的概念,在不同的应川中有不同的含义。 在服务运行的过程中,每个 Seryice的数据分片的数和内容都是可以动态 变化的,应用程序可以根据实际需要对数据分片动态地进行加载(Load)、卸载 ( Unload)、分裂( Split)和迁移( Migrate)等操作。 3.5.2.离线任务调度 在飞天中,一个离线任务(Job)的执行过程被抽象为一个有向无环图 ( Directed Acyclic graph,简称DAG):图上每个顶点对应一个Task,每条边 对应一个 Pipeline。个连接的两个Task的 Pipeline表示前个Task的输出 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论