Web服务如何使用JavaSpaces

日期: 2008-07-07 作者:William Brogden 来源:TechTarget中国 英文

本文详细描述间隔类型的网格计算是如何工作的,以JavaSpaces为例说明……   先来概述一下,间隔类型的分布式计算的特点在于松散的耦合系统,通过为数据容器对象提供类似相联存储器功能的但以服务,分布式计算是协调作用的。在Web服务的内容当中,服务将会接受需要大量运算资源或者其他资源的请求,并建立一个代表业务的对象。这个对象将被写入一个空间。在这个空间里,工作流程作表现为进行详细类型的工作的能力。

在工作完成的时候,Web服务将收回一个包含结果的对象,并给请求系统一个格式化的回复。   例子的问题   我将通过一个拥有通用信息的简单形式的例子来寻找问题:做出一个部分的描述,查找出所有的和这个描述……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

本文详细描述间隔类型的网格计算是如何工作的,以JavaSpaces为例说明……

  先来概述一下,间隔类型的分布式计算的特点在于松散的耦合系统,通过为数据容器对象提供类似相联存储器功能的但以服务,分布式计算是协调作用的。在Web服务的内容当中,服务将会接受需要大量运算资源或者其他资源的请求,并建立一个代表业务的对象。这个对象将被写入一个空间。在这个空间里,工作流程作表现为进行详细类型的工作的能力。在工作完成的时候,Web服务将收回一个包含结果的对象,并给请求系统一个格式化的回复。

  例子的问题

  我将通过一个拥有通用信息的简单形式的例子来寻找问题:做出一个部分的描述,查找出所有的和这个描述相符合的实体。在这个例子中,我们将有一些拼写正确或者拼写不正确的词语。这也许来自法院书记官试图代表证人按语音说的话的引用。我们做了一些拼写单词以及单词使用背景的尝试。我们需要发现一个有意的单词表。这将通过一个包含我们拥有的信息的对象的建立以及寻找试图配合的工人来实现。

  JavaSpace持有些什么

  为了将对象放入JavaSpace,你必须有一个执行进入接口的类(也是拓展了连续的接口的类)。此外,每个域都要拥有一个公共的对象引用——而不是私有的。下面是一个我用的类——“元电话”是语音编码运算法则的名字。使用的实体既代表着工作又成为工人们申报他们想要实体拥有相关特征的空间的模板。

    public class MetaphoneLookupEntry implements
  net.jini.core.entry.Entry {
  public String word ; // the starting point word
  public String domain ; // ie names, places, companies, etc
  public Boolean filled = Boolean.FALSE ;
  public String code ; // metaphone code
  public String worker ; // so we can track who does what public String[] matching ;
  public MetaphoneLookupEntry() {
  }
  public MetaphoneLookupEntry(String wd, String type ){ word = wd ; domain = type ;
  }
  }

  工人将Metaphone编码考虑成一个命令,并使用它寻找和具体的域相匹配的可能的名单。匹配的将被加入匹配字符串的数组当中,填充域也将被设为真的状态。如果没有任何匹配的话,字符串数组将为空。

  基本的JavaSpaces操作

  JavaSpaces支持四种基本的能够提供极大的组织分布式计算能力的操作。需要注意的是,一个间隔并不修饰进入的对象,它仅仅是持有对象并和其他的程序进行交流。这些基本的操作是写,取,读以及通报。在这些服务当中,我们仅需要他们的最基本的版本。

  写的操作是将对象放入间隔,并指定进入实体的时间长度是合法的,即我们所知道的持续时间。对一个Web服务而言,持续时间可以很短以至于错误会看上去很快。例如一个需要查询的服务也许会将MetaphoneLookupEntry的参数设为name="pittsburgh", type="place",并且在10秒的持续时间内将填充域设为假。

  取的操作使用入口作为模板,像空的数据行为一样,原始卡片和拥有值的数据域必须匹配。一个了解如何查找恰当名字的工人将会建立一个domain="place," filled=FALSE其他的域保持空的MetaphoneLookupEntry对象,因此,所有的事物都会匹配并在取的过程中得到使用。取的操作也详细列出了等待时间的数量。取的操作或者返回一个带有工作的入口或者返回空值,代表没有可以获得的工作。

  读的操作和取的操作是相似的,但是仅仅是得到了一个拷贝,原始的入口依然在间隔当中。而通告的操作建立了一个可以回馈的链接,通过它间隔服务就可以在匹配的入口被写入间隔之后提醒工人。

  事情发展的例子

  下面是个Web服务如何使用JavaSpaces服务的例子。我们假设一个或者多个工人的处理使用了取的操作,设置的模板参数是ype="place" , filled=FALSE。注意的是工人的处理线索直到取的服务返回或者持续时间超时才会停止。任何数量的工人处理线索都可能在这个状态之中。

  Web服务将入口的参数设置为type="place," name="pittsburgh" , filled=FALSE并进行了写的操作。直接的,他使用了和去操作相同的参数,只不过将filled设置为TRUE。这将在工人将其写回间隔的时候得到入口。

  工人之一成功的进行了取的操作,成功的得到了查询需要的入口。工人将其填充进匹配的字符串数组,将filled设置为真,并将入口回写到间隔之中、

  带有参数filled为真的Web服务“取”成功了,用查找到的被可能的匹配填充的结果修改了入口。在我使用的单词表中,"Pitsburg", "Pittsboro", "Pittsburg" 以及"Pottsboro"都是语音匹配的。

  优点和缺点

  尽管JavaSpaces服务器建立起来并不是一件微不足道的事情,但是和其他类型的网格计算服务器相比是简单的多的。此外,接口的简单性使得学习曲线更加容易。JavaSpaces方法最大的好处在于减轻了额外的加入表格的工人的数量。

  不过,从例子中可以清楚的看出。在一个JavaSpaces的解决方案当中有很多的额外的信息交易。因此使用JavaSpaces或者任何一种网格计算来支持Web服务的唯一原因就是对计算能力的要求或者具体的不能直接可行的支持服务器的资源。

相关推荐