Java服务器和浏览器客户端之间的乐观对象复制的解决方案?

时间:2010-12-02 21:32:29

标签: java javascript algorithm replication

我正在构建一个系统,其中多个用户需要同时创建,查看和修改一组对象。

  • 系统计划在Java服务器和现代浏览器客户端上运行(我可以选择哪些)。
  • 面对网络和服务器中断,它必须是健壮的,用户界面不得阻止修改,修改需要在本地存储并在连接返回时发布。
  • 在正常操作下,更改应以亚秒级延迟复制。
  • 网络延迟和带宽,cpu资源不太可能是大问题,规模大约是几十到几百个客户端。
  • 可以将对象视为原子值和结构集(即树)的结构。看来对象之间的引用是不必要的。
  • 我对属性级别的last-write-wins冲突解决方案感到满意,对快照一致性没有任何特殊要求。我想通过UI报告写冲突。
  • 最初我想解决服务器和多个客户端之间的复制问题。在未来,我可能也需要多级树。任意复制结构都不是必需的,但可以使故障转移或多主机更容易。

我遇到麻烦的问题是复制系统之间对象的更改。分布式并发很难,我想将这种复杂性委托给知道他在做什么的人。哪些库/框架可以帮助复制部分?

我已经找到了XSTM,它的任务似乎正是我所需要的,但不幸的是GWT部分似乎还没有准备好,而且该项目似乎前途未定。

如果没有什么真正有用的,那么我正在寻找有关哪种算法对此有用的想法?

我目前正在考虑受DVCS和运营转型启发的事情。服务器将接受对象的更改集并拒绝冲突的写入。客户端将跟踪上次已知的服务器状态和本地更改,检测已发布的更改与本地更改之间的冲突,并在接收的服务器状态之上重新置换本地更改。

1 个答案:

答案 0 :(得分:0)

某些分布式数据库是Cassandra的选项吗?它可能提供超过您需要和最少3个节点的需求。