英语原文共 11 页,剩余内容已隐藏,支付完成后下载完整资料
用于构建高性能计算Web应用程序的RESTful服务NEWT
概要:
NERSC Web工具包(NEWT)通过易于编写的web应用程序给将高性能计算(HPC)引入Web。我们的工作追求让高性能计算资源更容易得到,并且对那些习惯了web应用而不是正在使用的命令行接口的科学家有所帮助。因为有了Web 2.0标准以及AJAX、HTML5、JSON和REST等谢意,开发一个功能更完整的Web应用所需的努力正在减少。我们相信,通过将这些技术与现有的网络技术结合,HPC可以像Web一样。NEWT为针对URIs的简单事务提供计算和数据资源。
在本文中,我们描述了使用RESTful web服务搭建科学Web应用程序的方法。我们提供NEWT web 服务并且描述它如何通过AJAX和JSON协议在web浏览器环境中访问HPC资源。我们讨论NEWT的REST API(Application Program Interface, 应用程序接口)并且解决在单个web服务下集成异构后端资源集合的特定挑战。我们提供了客户端应用程序的示例,这些应用程序利用NEWT直接在web浏览器中访问资源。这项工作的目标是简历一个模型,通过该模型,HPC可以容易地通过网络访问,允许用户完全通过此类web界面与科学计算、数据和应用程序进行交互。
关键词:科学网关,REST,Web,Grid,AJAX,JSON,高性能计算
导论:
科学计算越来越多地向网络转移。我们已经看到国家能源研究研究科学计算中心看到对网络访问科学数据和方法的强烈需求,特别是当Web界面变得更精致和更具交互性。NERSC是美国能源部科学办公室赞助的旗舰高性能科学计算机构。NERSC是位于劳伦斯伯克利国家实验室的国家机构。作为其提供高质量资源和服务以通过计算加速科学发现的使命的一部分,NERSC正在为科学建立一系列网络网关。特别是,我们正在开发NERSC Web工具包(NEWT),这是一种Web服务,用于促进科学网关的开发,科学网关可以与高性能计算(HPC)资源交互。
NEWT 是基于REST的服务集合,允许科学家、程序员、员工和公众为HPC编写Web应用程序。这包括匿名只读和身份验证读写服务,旨在通过Web浏览器使HPC计算和数据资源高度可用。Web浏览器的互动一般通过脚本和web应用程序进行,这些脚本和应用程序对访问来自RESTful API的URI的内容进行轮询、聚合和混合。因此,API实际上不是一组Web页面,而是Web应用程序可以调用的一组定义良好的URI,它们充当信息源和接收器。
我们采取务实的方法来构建web访问HPC的函数(method,类方法),承认从多年观察科学团队如何使用计算资源和数据存储中收集到的有限的方法词汇。API是围绕易用、简洁、可编程的接口构建的。NEWT提供公开访问公共数据和LDAP/PKI身份验证机制,用于对作业和数据进行读写管理。
我们的newt api实现将以下资源作为URI公开,这些URI可以通过标准http谓词(GET, PUT, POST, DELETE)进行操作:
bull; 身份验证服务(Authentication services)
bull; 文件和目录(Files and Directories)
bull; 批作业处理(Batch Jobs)
bull; UNIX系统内核命令(UNIX Shell Commands)
bull; 会计信息(Accounting information)
bull; 自定义持久存储(Custom persistent stores)
bull; 系统状态信息(System Status information)
我们相信,这种与HPC中心接口的方法将使富客户机端的科学计算应用程序成为可能,这些应用程序将完全在web浏览器中用于端到端用户工作流。虽然本文关注的是上面描述的特性,但是NEWT作为一个API是可扩展的。REST体系结构风格有助于添加全新的资源类别。随着高性能计算范围的扩大,NEWT可以很容易地包含这里没有提到的其他资源和api。
在本文中,我们描述了迁移到NEWT模型构建web网关的的动机(章节2),我们总结了NEWT使用的REST的体系结构风格(章节3),以及当前使该模型可用的客户端技术(章节4)。我们解释了这个如何用于建立HPC的网关(章节5)。我们在高层定义REST风格的NEWT API(章节6)并且深入研究了NEWT服务的实现(章节7)。我们简要介绍了NEWT实现的性能(章节8)。我们将引导您完成一个简单的NEWT应用程序(章节9),然后是newt的示例应用程序和用例(章节10)。我们将描述在构建此服务时所面临的一些挑战(章节11)。在总结我们的结论(章节14)之前,我们审查了这领域的一些相关的成果(章节12)和未来的工作(章节13)。
2. 科学网络网关的再思考
一些科学领域已经从web网关中受益。然而,仍然有很大一部分的高性能计算是通过运行用户作业、处理后输出和执行分析的命令行会话和shell脚本。我们认为:
bull;排除大量可能不熟悉UNIX命令行接口的科学家
bull;产生一两个“专家”,他们可以代表科学团队的其他成员管理工作
bull;限制跨领域的科学,因为跨领域的科学可能来自于集成来自多个来源的良好公开的信息
已经有几次尝试使用专门的框架来构建科学网关。虽然这些通过提供一些公共接口和构建块简化了构建这些网关的过程,但是它们仍然需要学习特定的框架,并且需要从“内部”进行编程。
我们用NEWT的目标是提供一个界面,可以编程的任何人与HTML和JavaScript的知识。所有内容都是可以通过标准HTTP命令执行的URI。所有输出都是JSON格式的,这是浏览器中的一个原生JavaScript对象。异步JavaScript和XML (AJAX)以及HTML5技术为您提供了与HPC应用程序交互的所有工具。
在研究应用程序之前,我们已经在NERSC为不同的科学社区开发和部署了几个web网关。这包括定制的独立网关应用程序(如Deep Sky[15]、QCD[14]、GCRM)以及基于通用门户的网关(GridSphere[9])。根据我们的经验,定制的、特定于科学的网关往往更有用,因为它们是围绕底层科学用例构建的,而不是在后端计算层。这些接口与科学应用程序本身的集成更加紧密,因此允许用户直接处理他们的工作和数据。另一方面,我们注意到大多数网关都有一些与HPC中心交互的常见模式和方法。为了提高软件的可维护性和重用性,我们开始围绕这些常见的访问模式(如用户身份验证、文件传输、作业管理和数据子选择)创建构建块。一些通用的门户技术为我们提供了常见的构建块。但是这些与网格访问后端计算系统的知识联系太紧密,暴露了一些让经验较少的用户感到困惑的细节。虽然这些接口是可定制的,但是需要大量的学习,并且需要应用程序开发人员在框架内创建软件接口。
3.REST
REST或具象状态转移[1,25]是一种架构风格,通常用于访问web上的资源。REST体系结构风格对应用程序设计施加了一组约束,包括客户机-服务器模型、无状态通信协议、系统所有部分的统一接口、分层的资源层次结构和一组可缓存的响应。HTTP协议是REST风格最常用的实现(尽管这两种实现不一定是相同的)。
RESTful设计限制web体系结构,以便简化web的使用、开发和部署。首先,这种设计需要使用客户机-服务器体系结构,该体系结构将用户界面与数据存储问题分离开来,最大的好处是组件的开发可以独立进行。无状态约束要求应用程序状态仅由客户机维护。每个消息包含服务执行其功能所需的所有信息,并且不依赖于以前的交换。响应必须标记为可缓存或不可缓存。分层的系统需求进一步增强了可伸缩性,组件被安排在一个层次结构中,每个组件的知识被限制在它立即与之交互的层中。最后,统一接口约束是任何RESTful服务设计的基础——它要求客户机和服务之间的所有交互都要通过几个HTTP方法进行中介。我们关心的方法是GET、PUT、DELETE和POST。这些方法由HTTP规范定义。GET请求是安全的;它不要求对服务器状态进行任何更改。一个PUT或DELETE请求是幂等的,发出多个相同的请求将得到相同的结果。使用相同的表示形式多次更新资源,或多次删除资源相当于执行一次操作。POST是一个工厂方法,它返回对新创建资源的引用,并且是不安全的。
因此,RESTful设计约束提供了使用HTTP协议构建API的标准化方法。该设计包括正确使用标准HTTP方法和返回代码。。
4. 客户端技术
为实现NEWT服务,作者 选择了JQuery库编写RESTful AJAX请求以及JSON作为数据交换格式。翻译略。
5. 用于HPC的RESTFUL WEB服务
NEWT web服务遵循REST风格并实现了面向资源的体系结构(ROA)。与基于RPC的web设计不同,在基于RPC的web设计中,通常很少有URI,而且大多数服务逻辑是在消息传递层中定义的,在RESTful ROA中,通常有许多(通常是无限的)资源,每个资源至少可以通过一个URI寻址,并通过统一接口[2]公开。
在应用程序中,每个组件通常有两种类型的资源——一小部分一次性资源,其中一些是通过POST方法创建新资源的工厂。这些资源可能包含无限多个子资源。有几个顶级资源组件:身份验证、会计信息、作业管理、文件管理、Shell命令、系统信息和用户定义的持久存储。
一些操作允许匿名访问,但是所有涉及编写或使用受限后端资源的操作都需要身份验证。NEWT的身份验证组件提供了用于登录和退出的URI。我们使用基于表单的身份验证,并通过特权通信上的安全传输(HTTPS)发送授权数据。为了避免在每次交换时进行身份验证,我们使用会话和cookie在服务器上以会话标识符的形式维护一个小的应用程序状态。这打破了RESTful设计[3]的无状态约束,但它是web上的一个常见习惯用法。由于大多数现代web浏览器天生支持和自动处理cookie,因此使用cookie允许用户构建web应用程序和查询,而不必对每个请求显式地管理身份验证数据。
帐户信息组件是只读的,用于从NERSC标识管理(NIM) web服务访问用户概要信息,包括组成员。用户定义的持久存储组件利用组成员关系将读写功能限制为信息的“桶”。该组件的这个基本URI是一个工厂资源,允许用户创建新的bucket,并将一个bucket与预定义的NIM组关联,允许某些用户对该bucket读写数据。GET返回的基本资源的表示形式是所有桶的列表。对桶的GET返回桶的全部内容,这是一个JSON字典。桶也是工厂资源,桶的POST方法将创建一个新文档并将其位置返回给客户机应用程序;PUT和DELETE可用于创建/更新和销毁桶。桶中的每个单独条目都称为一个文档;PUT和DELETE可用于创建/更新和销毁文档。
图1所示。基于REST的高性能计算服务
我们使用GET/POST/PUT/DELETE的一般模式来访问我们感兴趣的所有资源。图1所示。提供NEWT通过其RESTful接口公开的资源的概述。
6. NEWT API
在其当前版本中,NEWT API公开了以下资源和服务:
身份验证
身份验证API允许用户使用用户名和密码登录,检查当前登录状态,然后注销。它依赖HTTP cookie来保存会话状态信息。在内部,这将自动为绑定到会话的用户创建一个短期网格证书,会话将作为该用户访问系统资源。然而,这种基于网格的交互对用户和API来说是完全隐藏的。
作业管理
API的作业管理组件允许用户在指定的计算系统上运行作业。有三种操作模式
bull;将作业提交到批处理队列并异步查询作业输出的资源。
bull;提交要立即在登录节点上运行的作业,并异步查询作业输出的资源。
bull;同步运行作业以获得输出和错误流。
还支持查询批处理队列中的所有作业的列表。批处理调度程序的所有细节(例如PBS或SGE作业文件)都对用户隐藏。
文件管理
文件管理API允许用户以给定的URI下载和上载文件。它们被映射到后端系统上的实际文件系统资源。该API还允许将文件系统目录清单作为JSON对象获取。
会计信息
这是一个只读API,允许用户应用程序从NERSC信息管理(NIM)系统查询会计信息。它允许我们将NIM数据库中的对象公开为JSON数据。这提供了对会计和簿记信息的访问,如用户帐户信息、配额、在给定系统上使用的小时数、组存储库信息等。
系统状态信息
该组件提供了一个简单但重要的功能——它显示给定的系统是否可用,从而在尝试访问系统上的资源之前为应用程序提供了完整性检查。这是一个公共API,不需要身份验证。
用户定义的持久性存储
用户定义的存储层允许应用程序以JSON对象的形式存储持久数据。数据是完全自由的形式,存储可以保存任何有效的JSON对象。这提供了一个持久性层,允许web应用程序跨多个用户或会话保存有状态信息。
NEWT API采用以下形式:
http-verb base_url/top_level_resource/sub_resource
HTTP头和参数用于传递会话和其他范围信息。
lt;
全文共13344字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[2998]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。