如何保持对象实例同步

时间:2011-05-06 13:51:21

标签: java synchronization locking real-time distributed-computing

我正在使用一个在我的应用程序中充当数据库的对象。但是,我需要拥有此数据库的冗余副本。因此,在init上,我创建了同一对象的多个实例(比如5个)副本。 (我正在使用JAVA,因此任何预先存在的库的提示也可能有用。)

该对象是一个服务器,它侦听端口以获取它所持有的信息的请求。其他实体可以随时通过相同或不同的端口更新此信息。

我的问题如下:

  • 是一种锁定策略 在这种情况下工作?也就是说,每次进行更新时 任何实例,该实例联系 所有其他实例并通过了 更新
  • 在此期间,所有请求 (读取或更新)来自其他实体 排队。

这种方法有用吗?我有疑虑,因为即使这有效,我认为该系统正在制造自己的瓶颈。你们说什么?有没有更好的方法来进行这种分布式同步?

4 个答案:

答案 0 :(得分:1)

您所描述的是分布式缓存。该空间中的大玩家目前是Coherence,但我相信JBoss Cache正在迎头赶上。

至于滚动你自己,看到表面上看起来非常简单的问题的复杂性,我不会在商业环境中推荐它,虽然它是一个有趣的家庭项目。

答案 1 :(得分:0)

您是在谈论分布式缓存吗?你看过ehcache吗?

答案 2 :(得分:0)

分布式合成化还有很多,可以在一个答案中提及。您必须担心两阶段提交,网络分区等。我建议您查看现有的分布式数据库解决方案以及包含负载平衡的n层Java EE体系结构。

答案 3 :(得分:0)

  

这种方法有用吗?我有我的   怀疑因为,即使这有效,我   认为系统正在创建自己的系统   瓶颈。

这将创造自己的瓶颈。你最好使用像HSQLDB这样的内存数据库或像SQLite这样的嵌入式数据库。