我的要求是跨集群共享一个java对象。
我很困惑
有这样的约束:
任何一个人都能想到考虑到这些约束的最佳选择吗?
发布于 2013-08-07 12:42:29
它可以依赖于要在集群中共享的对象的用例。
我认为这可以归结为以下最复杂、最不复杂的选项
分布式缓存 http://www.ehcache.org
如果您需要确保一个对象可以从每个节点的缓存中访问,那么分布式缓存是很好的。我已经使用ehache相当成功地分发,不需要设置一个terracotta服务器,除非您需要规模,可以通过rmi将实例连接在一起。还可以根据需求同步和异步地工作。此外,如果节点下降,缓存复制非常方便,因此缓存实际上是多余的,不会丢失任何东西。如果您需要确保对象已经跨所有节点进行更新,那么很好。
集群执行/数据分发 http://www.hazelcast.com/
Hazelcast也是一个不错的选择,因为它提供了一种跨集群执行java类的方法。如果您有一个表示需要执行的工作单元的对象,并且您不太关心它在何处执行,这将更有用。
对于分布式集合也很有用,即分布式映射或队列。
滚动您自己的RMI/Jgroups
可以编写自己的客户机/服务器,但如果您处理的对象的需求开始变得复杂,我认为您将开始遇到更大的框架解决的问题。现实地说,Hazelcast真的很简单,应该可以消除你自己的需要。
发布于 2014-07-11 13:53:24
它不是开源的,但是Oracle一致性可以很容易地解决这个问题。
如果您需要JCache的实现,我今天唯一知道的实现就是Oracle;参见:part.htm
为了充分披露,我在甲骨文工作。在这篇文章中表达的意见和意见是我自己的,并不一定反映我的雇主的意见或意见。
发布于 2013-08-07 12:26:52
您可以考虑RMI和/或动态代理。
*动态代理可以包装任何对象,并对每次方法调用执行一些前后任务。在这种情况下,它可能使用原始对象进行RMI调用。
https://stackoverflow.com/questions/18102759
复制相似问题