javascript - Solution for optimistic object replication between Java server and browser clients? -
i'm building system multiple users need create, view , modify set of objects concurrently.
- the system planned run on java server , modern browser clients (i pick ones).
- it needs robust in face of network , server outages, user interface must not block modifications, modifications need stored locally , published when connectivity returns.
- under normal operation changes should replicate sub-second latency.
- network latency , bandwidth, cpu resources unlikely big issues, scale on order of tens hundreds of clients.
- the objects can considered structures of atomic values , sets of structures (i.e. trees). seems references between objects unnecessary.
- i'm happy last-write-wins conflict resolution on attribute level, don't have particular requirements snapshot consistency. report write conflicts through ui though.
- initially i'm looking solve replication between server , multiple clients. in future i'll need multi-level trees too. arbitrary replication structures not necessary, make failover or multi-master easier.
the issue i'm in trouble replicating changes objects between systems. distributed concurrency hard , i'd delegate complexity knows he's doing. libraries/frameworks out there replication part?
i found xstm , mission seems need, unfortunately gwt part doesn't seem ready yet , project seems have uncertain future.
if there's nothing useful out there, i'm looking ideas on algorithms this?
i'm thinking of inspired dvcs , operational transform. server accept change-sets objects , reject conflicting writes. clients track last known server state , locally made changes, detect conflicts between published changes , local changes , rebase unconflicting local changes on top of received server state.
is distributed database cassandra option ? provides more need , needs @ lest 3 nodes running though.
Comments
Post a Comment