【发布时间】:2009-02-24 14:44:41
【问题描述】:
JavaSpaces 技术有真正的实际用途吗?它是如何实现的?
【问题讨论】:
标签: java distributed-computing javaspaces
JavaSpaces 技术有真正的实际用途吗?它是如何实现的?
【问题讨论】:
标签: java distributed-computing javaspaces
我们目前正在使用 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 是相当专有的。
【讨论】:
我相信酒店预订系统 Orbitz 在 Jini 上运行。
根据对 Vin Simmons 的采访,基于 Java Posse 剧集 #82、#84 和 #86,这项技术有时被用于军事或金融应用中,不幸的是,这些应用在默默无闻中。
【讨论】:
几年前我用过它,但它可能没有太大变化。
@Keith:(过去至少)可以在单个进程/JVM 中启动所有服务,我认为那里有关于如何执行此操作的文档。
我相信 Jini/Javaspaces 在欧洲用于一些大型应用程序(票务、手机等)。 GE Aircraft 也将其用于研究和分析。
Texas Tech 的SORCER lab 拥有一个基于 Jini/Javaspaces 构建的大型 SOA 架构,您或许可以在那里找到一些帮助。
【讨论】:
目前我还不知道 JavaSpaces 的任何新用法。对于分布式计算,大多数大型系统都是使用内存数据网格技术或分区的类似 NoSQL 的解决方案构建的。 (我看到很多 Oracle Coherence 被使用,但这可能是因为我使用它。)
为了全面披露,我在 Oracle 工作。这篇文章中表达的观点和观点是我自己的,并不一定反映我雇主的观点或观点。
【讨论】: