Perl 和网格基础设施
不管您是要开发一个独立的网格,或是只想为现有的网格提供一个接口,Perl 都可以提供帮助。通过其可扩展的体系结构和对构成现代网格的众多协议和系统的支持,无论是在提交阶段还是在计算阶段,Perl 都是理想的候选者。 Perl 仍然是现有最流行和使用最多的通用脚本语言。它对于 Web 的关照仍然是其最大卖点之一,您可以利用这一点以及其他一些功能增强 ?? 如跨平台支持、众多数据库服务和连接选项 ?? 帮助构建网格服务。 在本文中,我分析 Perl 作为 Web 服务平台的机制,如果想将 Perl 集成到基于 OGSI 的网格应用程序和服务中,这是重要的一步,其中包括了对一些支持通信工具、数据库工具程序和 Web 界面组件的分析。 Perl,灵活的朋友
各 种选择太多了,从像 Pascal、C 和 C++ 这样的编译语言到 “实时(just-in-time)”的、基于字节的开发语言如 Java 语言。不过在网格中,通常最大的要求是语言要有灵活性,同时又有足够的实用性,使它可以用于不同的目的,而不会受到大的限制。 这种语言还应该具有可用性 ?? 就是说,容易使用和用它开发应用程序,这样就可以迅速和容易地延伸和扩展网格。可用性还使开发基于网格基础设施的新应用程序更容易,这在使用计算网格时特别重要,在那里您可能需要开发自定义的计算组件以处理进程。 最后,也是最重要的,如果希望支持异质的网格,那么这种语言就需要支持尽可能多的操作系统并提供平台独立的代码,这样才可以容易地部署网格应用程序。 所 有这些灵活性都指向一种脚本语言,不错,就是 Perl。从老的 Digital VAX 系统到 DOS、Windows、Unix、Mac OS 和许多其他操作系统都支持 Perl。除了容易使用外,特别是在开发应用程序时,Perl 的一个最强大的功能是它可以与另一种语言通信(主要是 C)。这使它除了在系统中构建的所有功能和通过 Perl 自己基于模块的扩展系统所支持的功能外,还可以使用范围广泛的外部工具和库。Comprehensive Perl Archive Network(CPAN,一个现成的模块和 Perl 语言扩展集合)使 Perl 特别有用和容易使用。它们是用户贡献的语言扩展,或者是完全用 Perl 编写的,或者是用 C 接口 连接到外部库。 CPAN 文档包括从 Postscript 驱动和 Web 界面构造器到数据库接口和 XML 解析器和处理器的所有内容。可以使用其中许多模块帮助构建网格应用程序,或者使用合适的扩展连接现有的网格环境,如 Globus。 通信工具
直接的 TCP/IP 通信是可以使用的最基本的系统,在某些方面,它既是最灵活的,也是最难于有效使用的。IO::Socket 工具包提供了到基本 TCP/IP 套接字的最好接口。要处理多连接,您可以使用 对 于具有容易使用和灵活的客户机/服务器结构的跨平台兼容解决方案,选择 POE(Perl 对象环境,Perl Object Environment)就对了。POE 是多任务网络框架,它支持基于服务器或者客户机的多连接,然后利用事件驱动的接口处理双向的信息传输。例如,下面是一个简单的服务器,它使用函数处理事 件:
不过,如果准备使用事件驱动的环境,那么 Web 服务是更有效的解决方案,在范围更广泛的网格应用程序中,它们还有其他的好处。 Web 服务
Perl 提供了各种基于两个主要标准(SOAP 和 XML-RPC)的 Web 服务实现。OGSI 标准使用 SOAP 标准,它优于 XML-RPC 的一点是它让您除了可以使用远程过程调用之外,还可以使用远程对象。 在 Perl 中最好的 SOAP 支持模块是
您需要将它拷贝到一个脚本中 ?? 如 对于独立的 SOAP 服务器,使用 在客户端,可以直接或者自动调用远程函数。直接方法像下面这样:
上面的代码通过服务器上的 SOAP 调用远程函数
SOAP 真正强大之处在于创建远程对象并与之交互的能力。在网格中,可以将它与定义网格应用程序的类结合使用。发布网格应用程序时,可以将这个模块拷贝到不同的提 供者上。当作业到达分发者(distributor)时,可以创建一个新的网格对象,提供必要的参数并得到结果。因为对象是持久性的,所以您可以使用有状 态或者基于会话的网格应用程序。 例如,可以在需要状态信息的解决方案 ?? 如数据库处理 ?? 或者提供持久性存储或者到信息和其他系统的接口的解决方案中使用 SOAP。它们还可用于计算系统需要复合计算,同时不需要发送更多信息的地方。例如,视频编码通常使用来自上一帧的信息。交换像这样的大量信息会对网格的 网络造成严重影响,特别是当它跨越了局域网的边界时。 在像资源或者应用程序网格这样需要从网格提供者得到立即答复和响应的直接访问网格中,可以让网格对象在分发者上保持活动以便在需要时重复使用。 下面的脚本是一个典型分发者的例子(有删节),在基于对象的、分发者引导的网格应用程序中使用了 SOAP :
可以看到,这里我是如何创建一个简单的、基于散列的结构来保持对提供者上的远程 SOAP 对象的引用。然后我可以直接调用提供者上的这个函数,无需再次打开连接。 OGSI::Lite
关于 OGSI::Lite 和已经用于 lattice Boltzmann 计算的网格服务(它们都是用 Perl 编写的)的更多信息请参阅 参考资料。 Perl 和 Globus
数据管理
数 据库接口(Database Interface,DBI)工具包通过用数据库驱动(DBD)连接到各个数据库提供了架构中立的解决方案。到底层数据库的接口可能是不同的,但是 DBI 模块提供了不变的接口(幸运的是大多数使用 SQL)。这意味着您可以在需要时和环境改变时改变数据库,同时不用对代码做大幅度修改。 独立的驱动程序系统使您可以用使用像 MySQL 和 PostGreSQL 这样的开放源代码解决方案,也可以使用像 Oracle 和 DB2 这样的商业软件,都通过相同的接口。 这 些接口可以在本地工作,也可以通过网络工作,这样就可以用这个系统使提供者访问远程数据库解决方案以下载工作和数据。因为有了对多种数据库的支持,所以可 以让网格应用程序分布在有一个数据库或者多个数据库源的网格上,也可以分布在网格的网格(支持几个独立的网格作为一个网格服务器集合的一部分)上, 其中不同的网格组使用不同的数据源。 如果希望一个本地化的解决方案,比如在一个不想安装全功能的数据库解决方案中,或者提供 对这样的数据库的远程访问的网格提供者上安装一个 '轻量级' 数据库实现,那么可以使用 DBD::CSV 驱动。这个模块使用简单的逗号分隔(CSV)文件,同时支持用 SQL 语言访问。可以创建数据库,更新记录并管理数据,就像使用一个典型的 RDBMS 一样,但是使用的是基本文本文件并且不需要外部应用程序。 Web 界面
有大量完成这些任务的方法,但是一个突出的方法是使用 Web 站点作为监视和管理解决方案。同样,Perl 得分最高。它有支持动态 Web 网站和界面的长期历史,在 Web 上有很多动态内容是通过 Perl 支持的。 用同样的工具提供 Web 界面和管理网格使得将这两个系统集成到一起变得容易了。即使不是整个系统都使用 Perl,而是使用像 SOAP、XML-RPC 或者 C 扩展接口这样的工具,也可以用 Perl 作为到网格服务的接口。 结束语
|
0 Comments:
发表评论
<< Home