Are there real practical uses of JavaSpaces technology out there and how exactly is it implemented?
6 回答
我们目前正在使用 javaspaces(Sun outrigger 实现)来协调松散耦合的进程。它背后的想法令人信服,而且 API 非常简单。实际执行一直有问题。它是建立在 Jini 之上的,因此需要 5 或 6 个进程来调出一个空间。而且,至少在 Sun 的实现中,没有办法让它通过特定端口进行通信,这使得防火墙有点痛苦。
我们遇到的另一个问题是空间中没有隐含的排序。因此,如果您放入 5 个对象,并且您的读取/获取模板与所有 5 个匹配,则未指定您将获得哪一个。根据应用程序,这可能是也可能不是问题。
GigaSpaces是 JavaSpaces 的成熟版本。它广泛用于保持安静的金融应用程序。
至于实现,它基本上是Jini之上的事务对象数据库。查询类似于 db4o。
我已经看到它在金融应用程序中使用,主要用于管理计算工作者(网格样式),其中条目从前端应用程序写入空间,并通过匹配显示需要工作的字段由工作者提取。结果可以写回空间,触发notify
由前端应用程序注册,然后读回完成的工作。
对于计算工作者来说没关系,但是缺少排序可能对您来说是个问题(如果只是因为不可预测性) - 某些实现具有强制执行 FIFO 排序的功能。它也被用于长期数据存储,因为它是持久的,但我认为这不是一个好主意。管理工具不足以使其易于管理,并且由于数据量而导致性能受到影响。
使用了Dan Creswell 的Blitz JavaSpaces实现——它有很多特性(可以在瞬态或持久模式下运行),被设计成健壮的(带有事务日志记录)并保持高性能,并且非常可调。与其他 Jini 服务一样,您可以配置“导出器”以使其侦听特定端口以使防火墙更容易 - SSL 传输和完整的 PKI 也被使用,并且通过 Jini 的通信抽象来实现。
我认为 Gigaspaces 是唯一通过以多种方式扩展规范而继续创新的实现,这很高兴看到。他们使其适用于各种用例,并增加了集群和高可用性等实现特性。不过使用它会让我担心,因为我会更高兴在社区中看到这些功能的两个或多个实现,因为 Gigaspaces 是相当专有的。
几年前我用过它,但它可能没有太大变化。
@Keith:(过去至少)可以在单个进程/JVM 中启动所有服务,我认为那里有关于如何执行此操作的文档。
我相信 Jini/Javaspaces 在欧洲的一些大型应用程序(票务、手机等)中使用。GE Aircraft 也将其用于研究和分析。
Texas Tech 的SORCER 实验室有一个构建在 Jini/Javaspaces 之上的大型 SOA 架构,您也许可以在那里找到一些帮助。
我相信酒店预订系统 Orbitz 在 Jini 上运行。
基于 Java Posse第 82集、第 84 集和第 86 集,这是对 Vin Simmons 的采访,该技术有时用于军事或金融应用程序,这些应用程序在安静时很不幸。
目前我还不知道 JavaSpaces 的任何新用法。对于分布式计算,大多数大型系统都是使用内存数据网格技术或分区的类似 NoSQL 的解决方案构建的。(我看到很多 Oracle Coherence 被使用,但这可能是因为我使用它。)
为了全面披露,我在 Oracle 工作。这篇文章中表达的观点和观点是我自己的,并不一定反映我雇主的观点或观点。