Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java服务器和浏览器客户端之间的乐观对象复制解决方案?_Java_Javascript_Algorithm_Replication - Fatal编程技术网

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

Java服务器和浏览器客户端之间的乐观对象复制解决方案?,java,javascript,algorithm,replication,Java,Javascript,Algorithm,Replication,我正在构建一个系统,多个用户需要同时创建、查看和修改一组对象 该系统计划在Java服务器和现代浏览器客户端上运行(我可以选择哪个) 它需要在网络和服务器中断时保持健壮,用户界面不得因修改而阻塞,修改需要存储在本地,并在连接恢复时发布 在正常操作下,应以亚秒的延迟复制更改 网络延迟和带宽、cpu资源不太可能是大问题,规模在数十到数百个客户端之间 对象可以被视为原子值的结构和结构集(即树)。似乎对象之间的引用是不必要的 我对属性级别上的上次写入wins冲突解决很满意,对快照一致性没有任何特殊要求。

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

  • 该系统计划在Java服务器和现代浏览器客户端上运行(我可以选择哪个)
  • 它需要在网络和服务器中断时保持健壮,用户界面不得因修改而阻塞,修改需要存储在本地,并在连接恢复时发布
  • 在正常操作下,应以亚秒的延迟复制更改
  • 网络延迟和带宽、cpu资源不太可能是大问题,规模在数十到数百个客户端之间
  • 对象可以被视为原子值的结构和结构集(即树)。似乎对象之间的引用是不必要的
  • 我对属性级别上的上次写入wins冲突解决很满意,对快照一致性没有任何特殊要求。不过我想通过UI报告写冲突
  • 最初,我希望解决服务器和多个客户端之间的复制问题。将来我可能还需要多层树。任意复制结构不是必需的,但会使故障切换或多主机更容易
我遇到的问题是在系统之间复制对对象的更改。分布式并发很难,我想把这种复杂性委托给那些知道自己在做什么的人。有哪些库/框架可以帮助复制部分

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

如果没有什么真正有用的东西,那么我正在寻找什么样的算法对这个有用


我目前正在考虑DVCS和运营转型带来的灵感。服务器将接受对象的更改集并拒绝冲突写入。客户端将跟踪最后一个已知的服务器状态和本地所做的更改,检测已发布的更改和本地更改之间的冲突,并在接收到的服务器状态之上重新确定未确认的本地更改的基础。

是否可以选择某个分布式数据库?它提供的可能比您需要的多,但至少需要3个节点运行