分块数据传输:能够将数据分割放置在多个服务器上,从而提高聚集带宽。GridFTP 是通过定义在网格论坛(Grid Forum)草案中的扩展来支持分块数据传输的。
中国南通服务器网,为中文网南通服务器网
清单 1中的 Java 类实现了一个到本地文件系统的基本 GridFTP 传送。
Www.Spdns.com
Globus Toolkit 使用标准 log4j 包( http://jakarta.apache.org/log4j/docs/)通过定义一个静态记录器来显示日志消息: Spdns.com
private static Logger logger = Logger.getLogger(MyGridFTP.class.getName());
Spdns^com
类构造函数获取主机名和端口作为参数,并使用网格安全性基础设施(GSI)凭证对服务器进行认证。
Www~Spdns~com
注:该类只能与 Globus Toolkit 2.2 一起使用,而不能与 2.0 一起使用。Globus Toolkit 版本 2.0 和 2.2 之间的 GSI 有重大的变化。
中国南通服务器网
确保使用了正确的 Java CoG Kit 版本 Www@Spdns@com
下面对 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 文件。
Www_Spdns_com
将旧代理转换成 GSSCredential
Www_Spdns_com
为了通过 GridFTP 服务器的认证,必须将旧代理 GSI_2_PROXY 转换成 GSSCredential。 清单 2中的代码片段显示了该如何进行这一转换。
Www~Spdns~com
传送数据 Spdns.com
要开始从远程主机传送文件,您可以使用 清单 3 中的代码。
Www_Spdns_com
接口 DataSink 对于写进入的数据非常有用。请实现该接口以提供自己的数据存储方式。
中国南通服务器网
注:代码必须是线程安全的。使用并行传送方式时,几个流可能会试图写到该接口。 中.国.南通服务器网
传送多个文件 Spdns@com
传送多个文件要求客户机将传送方式设置为:对于侦听方,设置为被动方式;对于发送方,设置为主动方式。使用多个 get 调用还不够,因为数据通道在每次传送后都自动关闭。对于每个 get 调用,都由客户端接收数据(被动),而由远程主机发送数据(主动)。 Spdns.com
在每次调用 get 之前,请发出下面这行代码: 南通服务器网
client.setLocalPassive();client.setActive();
中国.南通服务器网
在进行每次 put 操作之前,都需要逆转主被动方式。请发出下面这行代码: 中国南通服务器网
client.setLocalActive();client.setPassive();。
Www_Spdns_com
要了解更多信息,请通过 http://www-unix.globus.org/cog/jftp/guide.html 阅读 GridFTP 客户机程序员指南(GridFTP client programmer guide)。 Spdns^com
并行传送
中.国.南通服务器网
乍一看,GridFTP 给您的感觉可能是:您可以让 FTP 客户机以 Kazza/Morpheus 样式从多个服务器传送多个文件。实际上,并行在 GridFTP 中仅仅是指将打开多个流从同一个服务器传送某个文件。
中国南通服务器网
对于涉及双方的传送,除非您有多处理器机器,否则 GridFTP 只会增加开销。下面这段内容引自 GridFTP 客户机 — 程序员指南(GridFTP client - programmer guide): Www_Spdns_com
对于涉及双方的传送而言,选择并行性时应该谨慎。使用多个流的优点很大程度上与低级 TCP 过程有关,同时也与 TCP 窗口大小有关。使用双倍的并行流并不一定会使性能提高一倍。实际上,从某种角度来看,性能反而会下降。ftp 包的当前实现在单独的线程中处理每条数据路径,因此,除非您的机器有多个 CPU,否则增加并行性只会增加计算开销( http://www-unix.globus.org/cog/jftp/guide.html)。
中.国.南通服务器网
并行传送需要使用扩展方式。而且,传送类型必须为映像,而数据接收器/源必须支持随机数据访问且必须是线程安全的。多个线程可能会向其中写入数据。 清单 4 显示了实现并行 get 调用的方法。
中国南通服务器网,为中文网南通服务器网
在上面的样本输出中,有用的信息包括 GridFTP 服务器的版本。在该特例中,那些有用信息是 dhcp126.adtech.internet.ibm.com GridFTP Server 1.5 GSSAPI type Globus/GSI wu-2.6.2 (gcc32dbg, 1032298778-28) ready 。
Spdns^com
故障诊断技巧
Www@Spdns@com
编写这些代码过程中所碰到的大多数问题都与处理旧代理及将它们转换成 GSSCredential 有关。仔细检查该类的构造函数,确保理解了该转换过程。还要确保运行了 Globus Toolkit 和 GridFTP 服务器的正确版本。较旧的版本不支持 GSSAPI。 Spdns_com
结束语
中国南通服务器网
GridFTP 是一种安全可靠的高性能数据传输协议,针对高带宽广域网对其进行了优化。GridFTP 协议基于 FTP 这一流行的因特网文件传送协议。这个 Java 类可以帮助您理解:GridFTP 是如何从远程服务器进行基本传送的,还向您显示了 Globus Toolkit 2.2 的安全性功能。 Www^Spdns^com