![](/img/trans.png)
[英]Sharing a Java synchronized block across a cluster, or using a global lock?
[英]Sharing a java object across a cluster
我的要求是跨群集共享一个java对象。
我有点迷惑不解了
有约束的
任何人都可以考虑到这些限制,提出最佳选择。
它可能取决于您要在群集中共享的对象的用例。
我认为它归结为最复杂到最不复杂的以下选项
分布式缓存 http://www.ehcache.org
如果需要确保可以从每个节点上的缓存访问对象,则分布式缓存很有用。 我已经使用ehache进行了非常成功的分发,除非你需要比例,否则无需设置兵马俑服务器,只需通过rmi将实例指向一起即可。 也可以根据需要同步和异步工作。 如果节点出现故障,缓存复制也很方便,因此缓存实际上是多余的,不会丢失任何东西。 如果您需要确保在所有节点上更新了对象,那就太好了。
集群执行/数据分发 http://www.hazelcast.com/
Hazelcast也是一个很好的选择,它提供了一种在集群中执行java类的方法。 如果您有一个表示需要执行的工作单元的对象,并且您不太关心它执行的位置,那么这将更有用。
也适用于分布式集合,即分布式映射或队列
滚动您自己的RMI / Jgroups
可以编写自己的客户端/服务器,但我认为如果您处理的对象的需求开始变得复杂,您将开始遇到更大框架解决的问题。 实际上Hazelcast非常简单,应该真的不需要自己动手。
它不是开源的,但Oracle Coherence可以轻松解决这个问题。
如果你需要JCache的实现,那么我所知道的唯一一个就是Oracle Coherence; 请参阅: http : //docs.oracle.com/middleware/1213/coherence/develop-applications/jcache_part.htm
为了充分披露,我在Oracle工作。 这篇文章中表达的观点和观点是我自己的,不一定反映我的雇主的意见或观点。
您可以考虑使用RMI和/或动态代理。
*动态代理可以包装任何对象,并在每个方法调用上执行一些前后任务。 在这种情况下,它可能使用原始对象进行RMI调用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.