首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨集群共享java对象

跨集群共享java对象
EN

Stack Overflow用户
提问于 2013-08-07 11:56:42
回答 3查看 4.6K关注 0票数 6

我的要求是跨集群共享一个java对象。

我很困惑

  • 是编写EJB并跨集群共享java对象还是
  • 使用任何第三方,如无穷大,记忆,兵马俑或
  • 那JCache呢?

有这样的约束:

  • 我不能更改任何特定于任何应用服务器的源代码(例如实现weblogic的单例服务)。
  • 我不能为集群和非集群环境提供两个构建。
  • 业绩不应降级。
  • 我正在寻找只有开源第三方,如果我需要使用它。
  • 它也需要在weblogic、Websphere、Jbos和Tomcat中工作。

任何一个人都能想到考虑到这些约束的最佳选择吗?

EN

回答 3

Stack Overflow用户

发布于 2013-08-07 12:42:29

它可以依赖于要在集群中共享的对象的用例。

我认为这可以归结为以下最复杂、最不复杂的选项

分布式缓存 http://www.ehcache.org

如果您需要确保一个对象可以从每个节点的缓存中访问,那么分布式缓存是很好的。我已经使用ehache相当成功地分发,不需要设置一个terracotta服务器,除非您需要规模,可以通过rmi将实例连接在一起。还可以根据需求同步和异步地工作。此外,如果节点下降,缓存复制非常方便,因此缓存实际上是多余的,不会丢失任何东西。如果您需要确保对象已经跨所有节点进行更新,那么很好。

集群执行/数据分发 http://www.hazelcast.com/

Hazelcast也是一个不错的选择,因为它提供了一种跨集群执行java类的方法。如果您有一个表示需要执行的工作单元的对象,并且您不太关心它在何处执行,这将更有用。

对于分布式集合也很有用,即分布式映射或队列。

滚动您自己的RMI/Jgroups

可以编写自己的客户机/服务器,但如果您处理的对象的需求开始变得复杂,我认为您将开始遇到更大的框架解决的问题。现实地说,Hazelcast真的很简单,应该可以消除你自己的需要。

票数 4
EN

Stack Overflow用户

发布于 2014-07-11 13:53:24

它不是开源的,但是Oracle一致性可以很容易地解决这个问题。

如果您需要JCache的实现,我今天唯一知道的实现就是Oracle;参见:part.htm

为了充分披露,我在甲骨文工作。在这篇文章中表达的意见和意见是我自己的,并不一定反映我的雇主的意见或意见。

票数 1
EN

Stack Overflow用户

发布于 2013-08-07 12:26:52

  • 这只是一个想法。您可能需要检查确切的实现。
  • 它会降低性能,但我看不出如何才能避免它。
  • 这不是一件容易实现的事情。也许您应该考虑负载平衡而不是集群。

您可以考虑RMI和/或动态代理。

  • 提取对象的接口。
  • 使用RMI访问真正的对象(来自所有集群,即使是实际持有该对象的集群)
  • 为了为现有代码创建RMI,可以使用动态代理(again..not确定实现)。

*动态代理可以包装任何对象,并对每次方法调用执行一些前后任务。在这种情况下,它可能使用原始对象进行RMI调用。

  • 为了传递RMI对象,您将需要集群之间的连接。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18102759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档