解决方案Ja​​va服务器和浏览器客户端之间乐观对象复制?客户端、乐观、浏览器、对象

2023-09-11 23:05:46 作者:瞧这一家子

我建立一个系统,多个用户需要创建,查看和修改一组对象的同时,

I'm building a system where multiple users need to create, view and modify a set of objects concurrently.

在该系统计划在Java服务器和现代的浏览器客户端(我来挑哪些)上运行。 它需要在面部的网络和服务器中断健壮,用户接口不能阻止进行修改,修改需要被本地存储并发布时连通的回报。 在正常操作变化应与亚秒级时延复制。 网络等待时间和带宽,cpu资源不可能是大问题,规模是几十到几百客户的订单上。 中的对象可以被认为是原子值的结构和集结构(即树)。似乎对象之间的引用是不必要的。 我很高兴在属性级别最后写的胜利解决冲突,不具备快照一致性的任何特殊要求。我想报告通过用户界面写入冲突虽然。 在起初我想找解决一个服务器和多个客户端之间的复制。在将来,我可能会需要多层次的树了。任意复制结构是没有必要的,但会使故障或者多主更容易。

这是我在与被复制更改系统之间的物体麻烦的问题。分布式并发是很难,我想这种复杂委托给别人谁知道自己在做什么。什么库/框架在那里,这将有助于与复制的一部分?

The issue that I'm in trouble with is replicating changes to the objects between systems. Distributed concurrency is hard and I'd like to delegate that complexity to someone who knows what he's doing. What libraries/frameworks are out there that would help with the replication part?

我已经找到 XSTM 以及它的使命似乎是几乎正是我需要的,但不幸的是,GWT部分没有按'不像是会是准备好了没有,该项目似乎有一个不确定的未来。

I already found XSTM and its mission seems to be almost exactly what I need, but unfortunately the GWT part doesn't seem to be ready yet and the project seems to have an uncertain future.

如果没有什么真正有用的在那里,然后我在寻找的想法是什么算法,将是很好的吗?

If there's nothing really useful out there, then I'm looking for ideas on what algorithms would be good for this?

目前,我正在思考的东西启发DVCS和业务转型。服务器会接受改变集的对象,并拒绝冲突的写操作。客户端将跟踪最后一个已知的服务器状态,并在当地进行了更改,检测发布的更改与本地更改之间的冲突和重订上接收到的服务器状态顶级unconflicting局部变化。

I'm currently thinking of something inspired by DVCS and operational transform. The server would accept change-sets for objects and reject conflicting writes. Clients would track the last known server state and locally made changes, detect conflicts between published changes and local changes and rebase unconflicting local changes on top of received server state.

推荐答案

是一些分布式数据库为卡桑德拉的一个选择?它可能提供比你更需要的,需要在免得3个节点上运行,但。

Is some distributed database as Cassandra an option ? It probably provides more than you need and needs at lest 3 nodes running though.