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

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

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

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

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

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

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

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