网站运营
位置:首页>> 网站运营>> 用GridFTP传送文件

用GridFTP传送文件

 来源:IMB 发布时间:2007-10-29 13:44:00 

标签:

计算网格为那些强大的新型探索工具提供了基础设施,这些基础设施包括桌面计算、智能设备、协作和分布式计算。Globus 项目(Globus Project)目前致力于定义和开发具有下列能力的持续数据网格:

安全健壮的高性能数据传输机制。

用于创建和操作大型数据集副本的工具集。

维护数据集副本目录的机制。

GridFTP 协议及其系列工具源自于意识到这样一个问题,即网格环境需要一种快捷、安全、有效而且可靠的传输机制。计算网格是如此的庞大和分散,以致于需要一种健壮的传输机制。GridFTP 因其支持下列功能而满足了这些需求:

并行数据传输:使用多个 TCP 流比使用单个 TCP 流提高了带宽。并行数据传输由 FTP 命令扩展和数据通道扩展提供支持。

网格安全性基础设施(Grid Security Infrastructure, GSI)和 Kerberos 认证支持:由用户控制各种数据完整性和机密性级别的设置。这种功能为传送文件提供了健壮且灵活的认证、完整性和机密性机制。

数据传输的第三方控制:支持为大型分布式社区管理大型数据集。它使第三方能够对存储服务器之间的传送进行控制。

分块数据传输:能够将数据分割放置在多个服务器上,从而提高聚集带宽。GridFTP 是通过定义在网格论坛(Grid Forum)草案中的扩展来支持分块数据传输的。

部分文件传送:与标准 FTP 要求应用程序传送整个文件不同,新型 FTP 命令支持传送文件的某些区域。

可靠的数据传输:故障恢复方法可以处理瞬态网络故障和服务器故障,同时可以重新启动失败的传送。

手工控制 TCP 缓冲区大小:支持获取最大 TCP/IP 带宽。

集成检测(instrumentation):支持返回重新启动和性能标记。

连接到 GridFTP 服务器

清单 1中的 Java 类实现了一个到本地文件系统的基本 GridFTP 传送。

Globus Toolkit 使用标准 log4j 包( http://jakarta.apache.org/log4j/docs/)通过定义一个静态记录器来显示日志消息:

private static Logger logger = Logger.getLogger(MyGridFTP.class.getName());

类构造函数获取主机名和端口作为参数,并使用网格安全性基础设施(GSI)凭证对服务器进行认证。

注:该类只能与 Globus Toolkit 2.2 一起使用,而不能与 2.0 一起使用。Globus Toolkit 版本 2.0 和 2.2 之间的 GSI 有重大的变化。

确保使用了正确的 Java CoG Kit 版本

下面对 Java CoG Kit 0.9.13 到当前版本 Java CoG Kit 1.1a 之间的主要 GSI 变化进行了汇总:

不赞成使用的包          取而代之的包或方法
org.globus.security       org.ietf.jgss
org.globus.io.ftp            org.globus.ftp
org.globus.mds.MDS   使用 JNDI(和 LDAP 提供程序)或直接使用 Netscape 目录 SDK(Netscape Directory SDK)来访问 MDS。

org.globus.gsi.GlobusCredential 类基本上已经取代了 org.globus.security.GlobusProxy 类的功能。然而,Globus 还是建议(如果可能的话) 不要使用 org.globus.gsi.GlobusCredential 类,因为它代表特定于某个安全性协议的公钥基础设施(Public Key Infrastructures, PKI)凭证。相反,Globus 建议尽可能多地使用一般安全 * (Generic Security Service, GSS)抽象。要了解更多信息,请通过http://www-unix.globus.org/cog/distribution/1.1/compatibility.html访问 Java 分发下的 compatibility.html 文件。

将旧代理转换成 GSSCredential

为了通过 GridFTP 服务器的认证,必须将旧代理 GSI_2_PROXY 转换成 GSSCredential。 清单 2中的代码片段显示了该如何进行这一转换。

传送数据

要开始从远程主机传送文件,您可以使用 清单 3 中的代码。

接口 DataSink 对于写进入的数据非常有用。请实现该接口以提供自己的数据存储方式。

注:代码必须是线程安全的。使用并行传送方式时,几个流可能会试图写到该接口。

传送多个文件

传送多个文件要求客户机将传送方式设置为:对于侦听方,设置为被动方式;对于发送方,设置为主动方式。使用多个 get 调用还不够,因为数据通道在每次传送后都自动关闭。对于每个 get 调用,都由客户端接收数据(被动),而由远程主机发送数据(主动)。

在每次调用 get 之前,请发出下面这行代码:

client.setLocalPassive();client.setActive();

在进行每次 put 操作之前,都需要逆转主被动方式。请发出下面这行代码:

client.setLocalActive();client.setPassive();。

要了解更多信息,请通过 http://www-unix.globus.org/cog/jftp/guide.html 阅读 GridFTP 客户机程序员指南(GridFTP client programmer guide)。

并行传送

乍一看,GridFTP 给您的感觉可能是:您可以让 FTP 客户机以 Kazza/Morpheus 样式从多个服务器传送多个文件。实际上,并行在 GridFTP 中仅仅是指将打开多个流从同一个服务器传送某个文件。

对于涉及双方的传送,除非您有多处理器机器,否则 GridFTP 只会增加开销。下面这段内容引自 GridFTP 客户机 — 程序员指南(GridFTP client - programmer guide):

对于涉及双方的传送而言,选择并行性时应该谨慎。使用多个流的优点很大程度上与低级 TCP 过程有关,同时也与 TCP 窗口大小有关。使用双倍的并行流并不一定会使性能提高一倍。实际上,从某种角度来看,性能反而会下降。ftp 包的当前实现在单独的线程中处理每条数据路径,因此,除非您的机器有多个 CPU,否则增加并行性只会增加计算开销( http://www-unix.globus.org/cog/jftp/guide.html)。

并行传送需要使用扩展方式。而且,传送类型必须为映像,而数据 * /源必须支持随机数据访问且必须是线程安全的。多个线程可能会向其中写入数据。 清单 4 显示了实现并行 get 调用的方法。

测试传送

要测试远程文件传送,请使用 清单 5中的代码。

log4j 工具对于调试和监控 FTP 传送都非常有用:

要获取基本消息,请使用 Logger.getRoot().setLevel(Level.INFO);

要获取扩展的信息,请使用 Logger.getRoot().setLevel(Level.DEBUG);

以 INFO 级别执行该类将得到 清单 6 中的样本输出。

在上面的样本输出中,有用的信息包括 GridFTP 服务器的版本。在该特例中,那些有用信息是 dhcp126.adtech.internet.ibm.com GridFTP Server 1.5 GSSAPI type Globus/GSI wu-2.6.2 (gcc32dbg, 1032298778-28) ready 。

故障诊断技巧

编写这些代码过程中所碰到的大多数问题都与处理旧代理及将它们转换成 GSSCredential 有关。仔细检查该类的构造函数,确保理解了该转换过程。还要确保运行了 Globus Toolkit 和 GridFTP 服务器的正确版本。较旧的版本不支持 GSSAPI。

结束语

GridFTP 是一种安全可靠的高性能数据传输协议,针对高带宽广域网对其进行了优化。GridFTP 协议基于 FTP 这一流行的因特网文件传送协议。这个 Java 类可以帮助您理解:GridFTP 是如何从远程服务器进行基本传送的,还向您显示了 Globus Toolkit 2.2 的安全性功能。

0
投稿

猜你喜欢

  • 1. 安装Evolution Evolution是一个整合了邮件,日历,计划任务,地址本功能的套件。以root身份运行apt-get ins
  • 腾讯QQ近期更新动作频频,2010的测试版中诸如自定义编辑头像、设置漫游及服务图标关闭等一些新特性颇为惹眼。在大家的眼球被2010吸引的时候
  • 关于优化说起优化,其实最好的优化就是提升硬件的配置,例如提高cpu的运算能力,提高内存的容量,个人认为如果你考虑升级硬件的话,建议优先提高内
  • 影响网站可信度的因素表现在多个方面,从大的方面来说,比如网站/企业的知名度、网站的功能和服务等,从小的方面来说,有很多细节问题都会或多或少影
  • 一,删除所有无价值的插件以下为引用的内容:插件是致使WordPress博客访问速度变慢的主要杀手之一,当你的博客访问速度逐渐变慢的时候,问问
  • GoDaddy主机用户如果想要取消主机帐户,将会删除存储在服务器上的所有的网站文档。所以在确保取消帐户前,需要保存文档的备份。首先.登陆Ac
  • 本报讯(记者 敖祥菲) 昨日,在2008百度世界大会的开场发言中,百度公司总裁兼CEO李彦宏用将近一半的演讲篇幅来讲述大洋彼岸充满火药味的总
  • 当互联网吵吵嚷嚷的进入2.0时代,当互联网的技术不再是那么高不可攀,当复制变成家常便饭,互联网热闹起来了myspace火了,中国冒出更多的m
  • Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。Google Chrome的特点是简洁、快速。Googl
  • WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL 数据库的服务器上架设自己的博客。也可以把 WordP
  • 继上次写了篇《让你的动易SW6自动生成站内链接》后有朋友提到了一个问题。如果说我不想重新生成文章,但又想把原来的这些文章的标题添加到站内链接
  • 最新消息,日前国内人气最高的非赢性互联网技术交流社区之一深度(http://bbs.deepin.org)成功升级。经过调整后的深度社区12
  • 对搜索的讨论一直很多,也看过很多关于搜索的文章.对于目前搜索方式的利于弊,在日常搜索过程中其实我们还是有很多体会的.纵看搜索的发展史:第一代
  • 1、如何界定经营性和非经营性,有没有一个固定的规则?如果只是产品展示,是否应办理经营许可证?有偿提供服务的就是经营性的,无偿提供服务的就是非
  • 我们于9月28日再次对域名邮箱做了更新:1. 支持一个QQ绑定5个域名。2. 支持修改管理员帐户名。3. 解除了域名20个字符长度的限制4.
  • 如何优化内存的管理,提高内存的使用效率,尽可能地提高运行速度,是我们所关心的问题。下面介绍在Windows操作系统中,提高内存的使用效率和优
  • 在2006年6月的美国《连线》杂志上,该杂志的记者Jeff Howe(杰夫.豪)首次推出了众包(Crowdsourcing)的概念,Howe
  • 雅虎CEO卡罗尔·巴茨(Carol Bartz)北京时间10月21上午消息,据国外媒体报道,雅虎CFO蒂姆&m
  • 帝国cms是我们用得比较多得PHP的建站系统,在建站过程中,如果自己没有信息源,只能靠手工不断的重复copy和粘贴,这样费时费力,于是我们就
  • 有人这样形容囧的魅力:囧是一种态度,囧是一种哲学;囧是平凡的,但是囧然一看,却又包含着万般语言;囧是神奇的,囧中有着对世界的探索;囧,就是囧
手机版 网站运营 asp之家 www.aspxhome.com