APP下载

科学计算环境文件传输和共享服务

2018-12-05曹荣强肖海力王小宁卢莎莎刘芳王彦棡

数据与计算发展前沿 2018年3期
关键词:计算环境客户端模块

曹荣强,肖海力,王小宁,卢莎莎,刘芳,王彦棡

中国科学院计算机网络信息中心 北京,100190

引言

随着新技术的发展,科研和工程领域正在以越来越快的速度产生海量且多样化的数据,这些数据需要海量的计算资源进行处理,而且计算需求在持续和快速增长。中科院计算环境采用三层架构,聚合 1个总中心、9个分中心、18个所级中心和 11个 CPU 中心的计算资源和应用软件,致力于提升计算资源利用效率和计算服务能力,服务于计算物理、计算化学、材料科学、生命科学、地球物理、流体力学、天文、农业等学科领域[1]。计算环境的用户还可以方便的使用国家高性能计算环境[2–3]的计算服务,包括天津、济南、深圳、长沙和广州等 5个国家超级计算中心的海量计算资源。在提供计算服务时,我们发现,作业处理的数据量越来越大,数据量从几百 MB到GB 级甚至 TB 级,数据传输时间占作业处理时间的比例越来越大,计算作业从高性能、计算密集型逐渐呈现出高通量、数据密集型的特点。

本文针对计算环境中几百 MB到GB 量级的数据文件传输耗时长、网络不稳定和数据在线共享问题,设计和实现一种简单易用的数据传输和共享功能,目标是提升计算作业输入和输出文件的传输能力和分享能力,为不同学科领域的开发人员提供云服务模式的数据开发服务,为计算用户提供简单灵活的数据文件传输和共享服务。

本文剩余部分第1节讨论和介绍相关工作;第2节讨论文件传输和共享服务的功能架构,重点功能模块的设计与实现,以及关键技术;第3节阐述 REST开发接口提供的关键功能;第4节描述基于微服务架构的服务部署和典型应用场景;第5节总结全文并展望未来工作。

1 相关工作

文件传输和共享服务是计算服务的核心之一,作业开始之前负责将输入数据传输到指定的作业工作空间,计算作业结束之后负责将输出文件传输到指定的存储空间或者后续的处理流程。经典文件传输协议如 FTP(File Transfer Protocol)、SCP(Secure Copy)和SFTP(Secure File Transfer Protocol)等协议及其相关软件支持两台主机之间的数据传输和共享服务,但并不适用于复杂计算环境多点之间的数据服务。GridFTP在 FTP 协议的基础上改进和优化网络传输速度[4],支持多点传输,其相关软件和服务目前仍在使用,但主机必须部署其实现软件,而且配置过程相对复杂。为提高易用性,GO(Data Replicator Globus Online)提供友好易用的WEB 图形界面,支持提供启动即忘记的数据传输服务,允许 GridFTP 存储节点间的高速传输[5]。BitTorrent和CDN(Content Delivery Network)适合相静态的数据传输和管理,但并不适用于研究团队和同行之间频繁更新数据的高性能计算领域。

国内外知名的计算环境根据自身业务的特点,也建设了不同的数据传输和共享服务。美国XSEDE(Extreme Science and Engineering Discovery Environment)User Portal 提供多样化的计算和技术支持服务[6–7],借助 Globus 实现大规模的数据传输服务[4]。欧洲 WLCG(World Wide LHC Computing Grid)是世界范围最大的高能物理计算和存储设施[8],通过专门的文件服务使用现有的协议如 HTTP、FTP和GridFTP等提供文件传输和共享服务。LIGO(Laser Interferometer Gravitational wave Observatory)科学合作组织[9]开发了专门的数据复制器,允许第三方服务代理数据传输任务,但范围限于社区内的授权结点。SCE 科学计算环境通过 MCP(Multi-nodes CoPy)服务,实现计算结点、环境存储服务之间的多点数据传输功能[10],受当时技术条件和硬件资源等因素的制约,不能很好地满足云模式的数据传输和共享功能。因此,本文针对几百 MB到GB 量级的作业文件,设计和实现简单易用的文件传输和共享服务,提升计算作业数据的传输效率和在线分享能力。

在科学计算领域,已经出现了一些REST(Representational State Transfer)WEB 服务 API。与基于 SOAP+WSDL+UDDI+WS- 标准栈的大 WEB 服务相比[11],基于 REST风格的WEB 服务,形式更简单,设计更轻量,实现更便捷。GLOBUS 既提供了软件即服务和平台即服务的云服务[12],也提供了REST风格的API,包括创建科学合作应用社区的组件如用户身份管理、联合认证[13]和数据传输、同步和共享[14]等方面。美国 NERSC(National Energy Research Scientific Computing Center)提出了REST风格的API[15]和REST风格 API 的框架[16],用于访问单个超级计算中心资源。因此,本文提供一组简单易用的REST 开发接口,为不同学科领域的开发人员提供云服务模式的数据开发服务。

在架构和部署方面,微服务已经成为一种非常流行的WEB 服务架构,具有占用资源小、可扩展、可重用和快速分发等特点,在运行时可快速扩展瓶颈服务[17]。XUP(XSEDE User Portal)已经从复杂整体式结构转变为可重用、可持续更新的微服务,XSEDE 的信息服务也在向微服务架构转变[18]。因此,本文将基于微服务架构设计、实现和部署相关服务,从而提升可重用和可扩展性。

2 服务架构和关键技术

本文提出的数据文件传输和共享服务采用模块化、多层次的松耦合结构,提供简单易用的REST风格的开发接口,如图1所示,客户端相当于浏览器/服务器模式的浏览器或者其它支持 HTTP 协议的软件,接口层和服务层等同于服务端,运行在 WEB 容器之中。除 REST 开发接口需要保持稳定和向后兼容之外,其它的模块对客户端开发人员来说是透明的,因此,能够快速响应需求,进行持续开发、部署和交付,保证了系统的灵活性和扩展性。另外,部署时服务端划分为多个微服务实例,根据负载变化动态扩展瓶颈服务,缩减空闲服务,从而以较少的服务器资源提供高质量的服务。下面讨论每个层次和模块的功能及关键技术。

图1 数据文件传输和共享服务功能架构图Fig.1 The architecture for data sharing and file transfer services

2.1 客户端

客户端是指通过 REST 开发接口调用数据文件传输和共享服务的外部应用,包括 WEB 应用、移动应用、桌面应用甚至是基于浏览的插件等外部程序。客户端以云服务模式调用这些服务,只需客户端支持HTTP 协议和 AJAX 调用方式,并不限定客户端的开发语言和平台。因此,开发人员可以根据自己的喜好选择开发环境,从而降低开发门槛,引导他们开发多学科领域的高通量、数据密集型和大数据处理的客户端,促进科学计算的发展。

2.2 接口层

该层是 WEB 服务端的重要组成部分,为客户端提供 REST风格的开发接口和统一认证服务。在设计过程中,充分调研多学科领域用户在数据文件传输和共享方面的需求,讨论并制定简单易用、功能灵活、兼容性强的接口。若将来接口必须进行非兼容性变更时,原接口保持不变,复制新接口以承载新的功能,从而保证已有的客户端不受影响。REST 开发接口的实现依赖于开源软件 Jersey[19],该框架遵循 JSR-311和 JSR-339 协议,提供了丰富的客户端和服务端组件,并且提供了功能强大的测试组件。

统一认证服务提供 SCE 的单点登录服务和简单密码认证服务。SCE 环境的单点登录服务[20]基于 Jasig CAS 软件[21]和轻量级 LDAP(Lightweight Directory Access Protocol)用户信息库,为整个科学计算环境提供统一的用户认证服务。考虑到 REST 开发接口的程序化访问特性,开发人员和用户可通过CAS 服务的REST风格的API 登录和使用本文提出的服务;或者通过 CAS 的代理模式,受 CAS 保护的其它客户端代表认证用户间接使用本文提出的服务。此外,文件所有者创建共享链接时若指定密码保护,文件共享服务会生成一个 5到8位的随机密码。简单密码认证服务负责验证密码和链接的有效性,从而保护文件的共享范围。

2.3 服务层

该层是数据文件传输和共享服务的核心功能,利用基础层的WEB 容器、存储设施和各项服务,具体实现接口层的具体功能。下面讨论几个关键模块的功能和关键技术。

2.3.1 文件管理

文件管理模块负责在计算机群或环境存储上提供文件和文件夹的创建、修改和删除功能。与 SCE 环境相结合,能够将用户的作业号转变化指定服务器上的文件路径,从而方便用户以作业为中心实现各种数据文件管理工作。

2.3.2 文件传输

文件传输模块负责在用户存储空间、SCE 环境存储空间、计算机群存储之间传输指定的文件。SCE存储空间和计算机群存储空间的数据文件传输,由MCP文件传输服务完成。MCP 依托计算机群常见的SFTP 服务,按照 SCE 环境的防火墙策略和网络状况,选择合适的路径并经过多个中间结点以数据流转发的方式实现文件传输[10]。用户存储和 SCE 环境存储空间的数据文件传输,主要通过 HTTP(s)协议传输,方便 REST 开发接口集成传输服务。

与 SCE 环境相结合,从指定作业下载文件或上传文件到指定作业时,首先从文件管理服务获取具体存储位置如计算机群或环境存储的详细路径,然后调用文件传输服务完成文件传输。考虑到从用户到计算环境再到计算机群的网络带宽的差异性,数据转发模块设计和实现 3种文件传输方法。第1种方法,通过 HTTP 协议在用户和计算环境之间同步传输文件,计算环境和计算机群之间的文件传输由后台服务异步实现,不必关注数据全过程传输的时间和路径等信息;第2种方法,用户和计算机群的存储之间直接传输数据,由文件传输服务在中间做数据流转发,实现文件传输的快速响应;第3种方法与方法 2 相似,若用户-计算环境和计算环境-计算机群的网速差异较大时,文件缓存模块提供文件临时存储服务,同时以较慢一方的网速发送数据流,从而有效利用快速网络的传输优势。考虑到大文件传输耗时长及网络不稳定性,设计和实现断点续传模块,既可以主动将文件分块然后按块传输数据;也可以在传输中断后,查询文件已经传输的长度或从指定位置继续传输数据。

2.3.3 文件共享

文件共享服务的目标是在不同学科领域社区和合作研究组织之间提供简单易用的在线文件共享服务。对于计算环境中的数据文件,生成一个文件传输的链接。考虑到安全和复杂性等因素,仅支持文件下载链接。考虑到易用性,短链接服务将长链接换为一个短链接,从而方便用户转发相关信息。

与 SCE 环境相结合,支持作业管理的终端软件,在用户浏览作业目录时,应该提供简单易用的文件分享按钮,并允许用户指定是否需要密码保护、共享有效期等安全信息。此外,终端软件还应该通过统计查询模块,展示当前用户的文件共享信息,允许用户取消指定文件的共享。

2.3.4 元信息服务

元信息服务负责存储文件传输和共享服务的各类信息,包括发起用户、执行时间和状态、操作的作业和文件、加密保存的共享密码等相关信息。微服务管理模块定时收集当前微服务的配置和运行信息,经过转换之后存储到元信息服务。另外,日志服务模块提供灵活可配置的日志记录和存储功能,详细记录文件传输和共享服务各功能模块的运行情况,方便查找问题和优化性能。

2.3.5 统计查询

统计查询模块依托元信息服务,提供文件传输和共享服务的历史信息和当前状态。当前状态服务定时查询元信息服务,收集状态信息如正在传输的文件、一定时间内累计传输的数据量等信息,并定时发布到高速缓存,为查询接口提供格式化的数据。历史查询功能针对元信息服务存储的信息,支持按用户、时间范围等条件查询信息。

2.3.6 安全和授权服务

该模块提供 WEB 应用安全保护和各类操作授权检查功能。在功能设计和代码实现过程中,尽量遵循安全的编程规则,严格检查输入和输出信息的格式、长度和类型等方面。针对每个具体的操作,检查发起者、操作对象和授权规则,保证各个服务的安全运行。

2.4 基础层

基础层负责连接SCE计算环境,提供数据文件传输和共享服务的WEB 运行环境。其中,MCP 文件服务连接 SCE 环境存储和计算机群的存储空间,提供安全的数据传输和文件管理服务。微服务的运行环境由 Apache 的Httpd和tomcat 容器共同提供,实现负载均衡和微服务动态部署。高速缓存 memcached 提供基于内存的信息共享服务,mysql 数据库提供格式化数据的长期保存和查询功能,共同为元信息服务提供信息存储功能。

3 REST 开发接口

文件传输和共享服务的REST 开发接口依赖HTTP 协议,敏感数据可通过 HTTPS 安全协议加密传输。REST 开发接口通过如 GET、POST和PUT等HTTP 标准方法进行调用,作用域包含在 URI 地址字符串之中,参数包含在 URI 的查询字符串或消息体之中。REST 开发接口的关键 API 如表1所示,{}表示变量,ujid 表示作业的编号,每个用户从 1 顺序增加。

除文件下载之外,API 函数返回 JSON 格式的字符串。如果交互正常则返回 HTTP 的状态码 200,其它错误代码请参考 HTTP 的标准定义。返回的JSON字符串包括 status_code和status_msg 两个通用参数及每个函数的具体返回内容。通用参数描述 API 调用的执行情况,包括 API 执行的状态代码和状态信息,状态信息用于说明状态代码的含义。status_code为 0 表示操作成功执行,其它代码表示执行出错,具体原因请参考 status_msg 的内容。

表1 SCEAPI-REST 的关键 API 功能表Table1 Key APIs for SCEAPI-REST

4 部署和应用

文件传输和共享服务部署在 2 台 Linux 服务器,如图2所示,服务器配置是 4 核单 CPU,4G 内存,千兆网络连接 MCP 文件服务。其中一台服务器安装Apache Httpd 服务用于负载均衡和端口转发功能;同时安装 Apache Tomcat 容器,部署文件管理、文件共享和统计查询 3个微服务,每个微服务部署一个实例。另外一台服务器仅安装 Apache Tomcat 容器,部署文件传输微服务,考虑到大量数据传输时的性能需求,部署 2个实例,可根据负载的变化动态增加新的实例。

图2 数据文件传输和共享服务的微服务部署Fig.2 Microservice deployment of data file transfer and shared services

文件传输和共享服务的目的是增强 SCE 计算环境对高通量和数据密集型作业的服务能力,主要有2 类应用场景。第1类应用场景是通用社区和多学科领域应用社区的作业文件传输特别是几百 MB 到几个 GB 级别的数据传输,开发人员可直接调用相关的API 实现文件传输功能,特别是基于 WEB 的客户端应用,甚至能够直接在浏览器端调用 REST 开发接口,开发者不再需要重复解决文件方面的问题,从而更加专注于学科领域、应用软件和使用流程的逻辑功能。第2种场景是多学科领域的协同工作环境,开发人员可以迅速增加文件共享功能,方便用户在不同的范围内共享和分发作业数据文件,提升数据共享的便捷性。该服务已经应用到通用社区 portal2.0 测试版[22],并取得良好效果。

5 小结和展望

面向 SCE 科学计算环境,围绕大数据处理和高通量计算作业的需求,本文设计并实现基于微服务架构的数据文件传输和共享服务,提供 REST 开发接口,重点解决几百 MB到GB 量级的作业数据文件传输耗时长、网络不稳定和数据共享问题,从而提升计算作业数据的传输效率和在线共享能力。该服务为多学科领域的开发人员提供云服务模式的数据开发服务,方便他们开发个性化和定制化的应用社区,为计算用户提供简单方便的作业数据的在线分享能力,从而增强 SCE 计算环境对高通量和数据密集型作业的服务能力。下一步计划继续提升数据传输微服务的性能,支持几十 GB 到数百 GB 的大文件传输,并支持FTP等更多文件传输协议。

猜你喜欢

计算环境客户端模块
云计算环境下网络安全等级保护的实现途径
28通道收发处理模块设计
“选修3—3”模块的复习备考
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
大数据云计算环境下的数据安全
云计算环境中任务调度策略
云计算环境下电子书包教育应用创新研究