阿里飞天云平台架构简介

  • 时间:
  • 浏览:0

飞天开放服务为用户程序提供了计算和存储两方面的接口和服务,包括弹性计算服务(Elastic ComputeService,简称ECS)、开放存储服务(Open Storage Service,简称OSS)、开放型态化数据服务(Open Table Service,简称OTS)、关系型数据库服务(Relational Database Service,简称RDS)和开放数据处里服务(Open Data Processing Service,简称ODPS),并基于弹性计算服务提供了云服务引擎(Aliyun Cloud Engine,简称ACE)作为第三方应用开发和Web 应用运行和托管的平台。

  伏羲中应用了“Master/Worker”工作模型。其中,Master负责进行资源申请和调度、为Worker创建工作计划(Plan)并监控Worker的生命周期,Worker负责执行具体的工作计划并及时向Master汇报工作情况报告(Status)。此外,Master支持多级模式,即另一有有四个Master能这麼隶属于另外另一有有四个Master之下。

  夸父(Kuafu)是飞天平台内核中负责网络通信的模块,它提供了另一有有四个RPC的接口,错综复杂编写基于网络的分布式应用。夸父的设计目标是提供高可用(7×24小时)、大吞吐量(Gigabyte)、高波特率、易用(简明API、多种协议和编程接口)的RPC服务。

  土伯(Tubo)是部署在每台由伏羲管理的机器上的后台程序,负责收集并向伏羲Master报告本机的情况报告,包括系统资源的消耗、Master或Worker程序的运行、等待的图片 、完成和失败事件,并根据伏羲Master前一天Job/Service Master的指令,启动或杀死指定的Master或Worker程序。一并土伯还负责对计算机健康情况报告进行监控,对异常Worker(比如内存超用)进行及时的清理和汇报。

  1. 集群监控(神农)

分布式系统底层服务:提供分布式环境下所这麼的协调服务、远程过程调用、安全管理和资源管理的服务。那先 底层服务为上层的分布式文件系统、任务调度等模块提供支持。

分布式文件系统:提供另一有有四个海量的、可靠的、可扩展的数据存储服务,将集群中各个节点的存储能力聚集起来,并才能自动屏蔽软硬件故障,为用户提供不间断的数据访问服务;支持增量扩容和数据的自动平衡,提供类式于POSIX的用户空间文件访问API,支持随机读写和追加写的操作。

任务调度:为集群系统中的任务提供调度服务,一并支持强调响应波特率的在线服务(Online Service)和强调处里数据吞吐量的离线任务(Batch Processing Job);自动检测系统中故障和热点,通过错误重试、针对长尾作业并发备份作业等最好的方式,保证作业稳定可靠地完成。

集群监控和部署:对集群的情况报告和上层应用服务的运行情况报告和性能指标进行监控,对异常事件产生警报和记录;为运维人员提供整个飞天平台以及上层应用的部署和配置管理,支持在线集群扩容、缩容和应用服务的在线升级。

  分布式系统底层服务

  考虑到网络通信时任何通信节点删剪都是不可信的,全都即使是飞天自身模块内控 之间的通信也同样是这麼认证和授权的,一点验证的机制也删剪一样。

  1. 协调服务(女娲)

MonitorService在集群中的一台机器上部署,通过向各个Agent发送特定的监控请求,并根据配置设定的规则,实现对集群的情况报告和事件的监控,以及报警和记录。

AnalysisService也是部署在集群中的一台机器上,通过访问神农来获得主要性能数据,一点聚合数据并计算出系统的总体资源情况报告(类式,集群的总资源消耗、总I/O吞吐量等),一点向外提供计算结果供查询。

  2. 集群部署(大禹)

  集群配置数据库负责存放和管理所有部署了飞天的集群的配置信息,包括集群中每个节点承担的角色、各个模块的软件版本、各个模块的基本参数配置等。一并,数据库中还记录了部署或升级时每个节点的任务执行情况报告,保证了在部署或升级时几瓶没得线节点能这麼在重新连线后进行自动修复。

  在飞天平台中,另一有有四个离线任务(Job)的执行过程被抽象为另一有有四个有向无环图(Directed Acyclic Graph,DAG):图上每个顶点对应另一有有四个Task,每条边对应另一有有四个Pipeline。另一有有四个连接另一有有四个Task的Pipeline表示前另一有有四个Task的输出是后另一有有四个Task的输入。

  在型态上,大禹所含了集群配置数据库、节点程序、客户端工具集等每种。

TCP:类式,tcp://fooserver01:9000

Nuwa:类式,nuwa://nuwa01/FooServer

  与用流(stream)传输的TCP通信相比,夸父通信是以消息(Message)为单位的,支持多种类型的消息对象,包括标准字符串std::string和基于std::map实现的若干string键值对。

异步调用:RPC函数调用时不等接收到结果就会立即返回;用户这麼通过显式调用接收函数取得请求结果。

同步调用:RPC函数调用完会 等待的图片 ,直到接收到结果才返回。在实现中,同步调用是通过封装异步调用来实现的。

  在夸父的实现中,客户端程序通过Unix Domain Socket与本机上的另一有有四个夸父代理(Kuafu Proxy)连接,不同计算机之间的夸父代理会建立另一有有四个TCP连接。曾经做的好处是能这麼更高效地使用网络波特率,系统能这麼支持上千台计算机之间的互联需求。此外,夸父利用女娲来实现负载均衡;对大块数据的传输做了优化;与TCP类式,夸父代理之间还实现了发送端和接收端的流控(Flow Control)机制。

  神农(Shennong)是飞天平台内核中负责信息收集、监控和诊断的模块。它通过在每台物理机器上部署轻量级的信息收集模块,获取各个机器的操作系统与应用软件运行情况报告,监控集群中的故障,并通过分析引擎对整个飞天的运行情况报告进行评估。

  2. 离线任务调度

  集群监控和部署

  在线应用对盘古系统提出了与离线应用不同的挑战:OSS、OTS要求低波特率数据读写,ECS在要求低波特率的一并还这麼具备随机写的能力。针对那先 需求,盘古系统实现了事务日志文件和随机访问文件,用于支撑在线应用。其中,日志文件通很多 种最好的方式对波特率进行了优化,包括设置更高的优先级、由客户端直接写多份拷贝而删剪都是用传统的流水线最好的方式、写入成功不经过Master确认等。随机访问文件则允许用户随机读写,一并也应用了类式日志文件的波特率优化技术。

飞天是由阿里云开发的另一有有四个大规模分布式计算系统,其中包括飞天内核和飞天开放服务。

  女娲系统基于类Paxos协议,由多个女娲Server以类式文件系统的树形型态存储数据,提供高可用、高并发用户请求的处可以力。

大规模:才能支持数十PB量级的存储大小(1PB=2000TB),总文件数量达到亿量级。

数据高可靠性:保证数据和元数据(Metadata)是持久保存并才能正确访问的,保证所有数据存储在指在不同机架的多个节点后面 (通常设置为3)。即使集群中的每种节点再次出现硬件和软件故障,系统才能检测到故障并自动进行数据的备份和迁移,保证数据的安全指在。

服务高可用性:保证用户才能不中断地访问数据,降低系统的不可服务时间。即使再次出现软硬件的故障、异常和系统升级等情况报告,服务仍可正常访问。

高吞吐量:运行时系统I/O吞吐量才能随机器规模线性增长,保证响应时间。

高可扩展性:保证系统的容量才能通过增加机器的最好的方式得到自动扩展,下线机器存储的数据才能自动迁移到新加入的节点上。

  一并,盘古系统才能很好地支持在线应用的低延这麼求。在盘古系统中,文件系统的元数据存储在多个主服务器(Master)上,文件内容存储在几瓶的块服务器(Chunk Server)上。客户端程序在使用盘古系统时,首先从主服务器获取元数据信息(包括接下来与那先 块服务器交互),一点在块服务器上直接进行数据操作。前一天元数据信息很小,几瓶的数据交互是客户端直接与块服务器进行的,一点盘古系统采用几瓶的主服务器来管理元数据,并使用Paxos协议保证元数据的一致性。此外,块大小被设置为64MB,进一步减少了元数据的大小,一点能这麼将元数据删剪里装去 内存里,从而使得主服务器才能处里几瓶的并发请求。

  伏羲Master负责整个集群资源管理和调度,处里Job/Service启动、停止、Failover等生命周期的维护。一并伏羲Master支持多用户额度配置、Job/Service的多优先级设置和动态资源抢占逻辑,能这麼说是飞天平台的“大脑”。伏羲对资源调度是多维度的,能这麼根据CPU、内存等系统资源,以及应用自定义的虚拟资源对整个机群进行资源分配和调度。

  神农系统包括Master、Inspector和Agent另一有有四个每种。

  在分布式系统中,不同计算机之间这麼通过消息交换的最好的方式进行通信。显式的消息通信这麼通过Socket接口编程,而远程过程调用(Remote Procedure Call,RPC)能这麼隐藏显式的消息交换,使得程序员能这麼像调用本地函数一样来调用远程的服务。

  每个离线任务都另一有有四个多JobMaster负责根据用户输入的任务描述(Job description)构造DAG和调度DAG中所有Task的执行。每个Task的Task Master会根据要处里的实例数量、数据在集群的分布及处里实例的资源需求,向伏羲Master申请机器资源并分配Task Worker在其上执行。分配到每台机器上的实例(Instance)是由Task Worker来具体执行完成的。每台机器上的Task Worker能这麼根据这麼选用多程序前一天多程序的不同运行模式。

  资源管理和任务调度(伏羲)

  飞天平台内核所含的模块能这麼分为以下几每种。

  RPC客户端(RPC Client)通过URI指定请求这麼发送的RPC服务端(RPC Server)的地址,目前夸父支持一种协议形式。

  在服务运行的过程中,每个Service的数据分片的数目和内容删剪都是能这麼动态变化的,程序能这麼根据实际这麼对数据分片动态地进行加载(Load)、卸载(Unload)、分裂(Split)和迁移(Migrate)等操作。

  对于在线服务(Service),由伏羲Master负责ServiceMaster的启动与情况报告监控,处里相应Service Master的资源申请请求。Service Master负责管理Service Worker的任务分配、生命周期管理以及Failover的管理。

  夸父RPC一并支持异步(asynchronous)和同步(synchronous)的远程过程调用形式。

  块服务器负责存储大小为64MB的数据块。在向文件写入数据前一天,客户端将建立到四个块服务器的连接,客户向主副本(Replica)写入数据前一天,由主副本负责向一点副本发送数据。与直接由客户端向四个副本写入数据相比,曾经能这麼减少客户端的网络波特率使用。块副本在放置的前一天,为保证数据可用性和最大化地使用网络波特率,会将副本放置在不同机架上,并优先考虑磁盘利用率低的机器。当硬件故障或数据不可用造成数据块的副本数目不满3份时,数据块会被重新克隆qq。为保证数据的删剪性,每块数据在写入完会 一并计算另一有有四个校验值,与数据一并写入磁盘。当读取数据块时,块服务器会再次计算校验值与前一天存入的值是否相同,前一天不同一点明数据再次出现了错误,这麼从一点副本重新读取数据。

  伏羲(Fuxi)是飞天平台内核中负责资源管理和任务调度的模块,一并也为应用开发提供了一套编程基础框架。伏羲一并支持强调响应波特率的在线服务和强调处里数据吞吐量的离线任务。在伏羲中,这两类应用分别简称为Service和Job。

飞天内核负责管理数据中心Linux集群的物理资源,控制分布式程序, 隐藏下层故障恢复和数据冗余等细节,有效提供弹性计算和负载均衡。如图所示,飞天体系架构主要所含四大块:1、资源管理、安全、远程过程调用等构建分布式系统常用的底层服务;2、分布式文件系统;3、任务调度;4、集群部署和监控。

  每个ServiceWorker负责处里另一有有四个到多个数据分片(Partition),同一时刻另一有有四个分片只会被分配到另一有有四个Service Worker处里。将数据分割成为互不相关的分片,一点将不同分片给不同Service Worker来处里是构建大规模应用服务的关键型态。数据分片是另一有有四个抽象的概念,在不同的应用所含不同的含义。

  对于离线任务(Job),伏羲Master负责Job Master的启动与情况报告监控,处里相应JobMaster的资源申请请求。Job Master根据用户输入的Job描述文件,将任务分解成另一有有四个或以上的Task,每个Task的资源申请、Task Worker的调度跟生命周期维护由Task Master负责。

  在离线Job的容错方面,除了提供对异常机器的黑名单机制、长尾Instance的后备Worker机制外,伏羲还提供了快照(Snapshot)机制。快照是Task级别的容错机制。前一天另一有有四个Task的n个Instance在前一次运行失败时完成了m个,这麼Task重启后只会重新调度运行剩余的n−m个Instance。

  再举另一有有四个使用女娲系统来实现负载均衡的例子:提供某一服务的多个节点,在服务启动的前一天在女娲系统的同一目录下创建文件,类式,server1创建文件“nuwa://cluster/ myservice/server1”,server2在同一目录下创建“nuwa://cluster/myservice/server2”。当客户端使用远程过程调用时,首先列举女娲系统服务中“nuwa://cluster/myservice”目录下的文件,曾经就能这麼获得server1和server2,客户端随能这麼这麼从中选用另一有有四个节点发出另一方的请求,从而实现负载均衡。

  1. 在线服务调度

  客户端工具集是运维人员实际使用的命令行工具和网页界面,运维人员通过那先 工具对集群进行部署、升级、扩容、缩容等具体操作。大每种操作都提供了自动化和人机交互执行一种最好的方式,分别适应简便操作和精细化控制一点种生活场景。在部署和升级的过程中,客户端工具负责控制总体的操作顺序,维护模块之间的依赖关系,并根据情况报告信息决定是否回滚或中断当前流程。

  在飞天平台内核中,每个Service都另一有有四个多ServiceMaster和多个不同角色(Role)的Service Worker,它们一并协同工作来完成整个服务的功能。Service Master是伏羲Master管理下的子Master(Child Master),它负责一种Service相关的资源申请、情况报告维护以及故障恢复,并定期与伏羲Master进行交互,确保整个Service正确、正常地运行。每个Service Worker的角色和执行的动作,删剪都是由用户来定义的。

  在资源管理方面,伏羲主要负责调度和分配集群的存储、计算等资源给上层应用;管理运行在集群节点上任务的生命周期;在多用户运行环境中,支持计算额度、访问控制、作业优先级和资源抢占,在保证公平的前提下,达到有效地共享集群资源。

  钟馗(Zhongkui)是飞天平台内核中负责安全管理的模块,它提供了以用户为单位的身份认证和授权,以及对集群数据资源和服务进行的访问控制。

  盘古(Pangu)是另一有有四个分布式文件系统,盘古系统的设计目标是将几瓶通用机器的存储资源聚合在一并,为用户提供大规模、高可靠、高可用、高吞吐量和可扩展的存储服务,是飞天平台内核中的另一有有四个重要组成每种。

  3. 安全管理(钟馗)

用户的身份认证(Authentication)是基于密钥机制的。

用户对资源的访问控制是基于权能(Capability)机制进行授权(Authorization)的。

  Capability是用于访问控制的一种数据型态,它定义了对另一有有四个或多个指定的资源(如目录、文件、表等)所具有的访问权限。用户访问飞天系统的资源时这麼持有Capability,一点即视为非法。打另一有有四个比方,前一天把Capability理解为地铁票,乘坐地铁(对地铁的一种访问最好的方式)的前一天必这麼有Capability,即地铁票。

  女娲系统支持Publish/Subscribe模式,其中另一有有四个发布者、多个订阅者(One Publisher/Many Subscriber)的模式提供了基本的订阅功能;另外,还可用通很多 个发布者、多个订阅者(Many Publisher/Many Subscriber)的最好的方式提供分布式选举(DistributedElection)和分布式锁的功能。

  女娲(Nuwa)系统为飞天提供高可用的协调服务(Coordination Service),是构建各类分布式应用的核心服务,它的作用是采用类式文件系统的树形命名空间来让分布式程序互相协同工作。类式,当集群变更原因特定的服务被迫改变物理运行位置时,如服务器前一天网络故障、配置调整前一天扩容时,借助女娲系统能这麼使一点程序快速定位到该服务新的接入点,从而保证了整个平台的高可靠性和高可用性。

  神农的MonitorService和AnalysisService是使用神农系统的另一有有四个程序。

  女娲系统的目录表示另一有有四个所含文件的集合。与UNIX中的文件路径一样,女娲中路径是以“/”分割的,根目录(Root entry)的名字是“/”,所有目录的名字删剪都是以“/”结尾的。与UNIX文件路径不同之指在于:女娲系统中所有文件或目录都这麼使用从根目录现在现在结速 的绝对路径。前一天女娲系统的设计目的是提供协调服务,而删剪都是存储几瓶数据,全都每个文件的内容(Value)的大小被限制在1MB以内。在女娲系统中,每个文件或目录都保存有创建者的信息。一旦某个路径被用户创建,一点用户就能这麼访问和修改一种路径的值(即文件内容或目录所含的文件名)。

  节点程序在集群的每另一有有四个节点上,负责与集群配置数据库同步该节点相关的集群信息,执行节点相关的具体运维任务,并汇报任务执行情况报告。节点程序一种是自我升级的,只需部署一次,即能保证运行的是该集群最适合的版本。在模块软件部署和升级的过程中,节点程序还负责软件的下载收集,为了保证波特率和规避单点故障,软件的收集采用P2P的最好的方式进行。

  大禹(Dayu)是飞天内核中负责提供配置管理和部署的模块,它包括一套为集群的运维人员提供的删剪工具集,功能所含了集群配置信息的集中管理、集群的自动化部署、集群的在线升级、集群扩容、集群缩容,以及为一点模块提供集群基本信息等。每个飞天模块的发布包都所含另一有有四个部署升级的描述文件,定义了该模块部署和升级的流程,提供给大禹使用。

  阿里云计算有限公司(简称“阿里云”)成立于2009年9月10日,致力于打造云计算的基础服务平台,注重为中小企业提供大规模、低成本、高可靠的云计算应用及服务。飞天开放平台(简称“飞天平台”前一天“飞天”)是由阿里云自主研发完成的公共云计算平台,该平台所提供的服务于2011年7月28日在www.aliyun.com正式上线,推出了第另一有有四个云服务——弹性计算服务。截至本书出版时,阿里云前一天推出了包括弹性计算服务、开放存储服务、关系型数据库服务、开放型态化数据服务在内的一系列服务和产品。

  在任务调度方面,伏羲面向海量数据处里和大规模计算类型的错综复杂应用,提供了另一有有四个数据驱动的多级流水线并行计算框架,在表述能力上兼容MapReduce、Map-Reduce-Merge等多种编程模式;自动检测故障和系统热点,重试失败任务,保证作业稳定可靠运行完成;具有高可扩展性,才能根据数据分布优化网络开销。

  密钥对是基于公开密钥最好的方式的,包括另一有有四个私钥和相对应的公钥。在飞天平台系统中,密钥对用于数字签名服务,以保证Capability的不可伪造。换句话说,私钥用于产生数字签名(如签发Capability),公钥用于验证数字签名的有效性(如验证签发过的Capability的有效性)。

  2. 远程过程调用(夸父)

Master:负责管理所有神农Agent,并对外提供统一的接口来处里神农用户的订阅(Subscription)请求,在集群中只另一有有四个多Master。

Inspector:是部署在每一台机器上的程序,负责收集当前机器和程序的通用信息,并实时发送给该机器上的神农Agent。

Agent:是部署在每台物理机器的后台程序。Agent负责接受来自应用和Inspector写入的信息。Agent启动后,会立刻向Master注册另一方,并根据Master发来的订阅(Subscription)命令执行相应的信息收集、过滤、聚合和处里操作。目前神农Agent处里的数据分为两类:事件类数据(如程序故障和报警)和数值类数据(如当前应用的性能计数、机器I/O吞吐量等)。

  神农的用户通过Master来访问神农系统,以数据订阅(Subscription)的最好的方式获取神农系统收集到的信息。

  分布式文件系统(盘古)