modify_num
干脆改成last_modify
比较直观,内容就是最后一次修改时间戳,这样同步的时候带上上次同步完的时间戳,服务器把上次同步之后所有更改发回。
两边都维护了一个num,冲突解决如何处理?
如果最初版本值为0,在网页端和离线客户端编辑,
同步时,服务器端和客户端的版本值都为1;
这就是涉及到冲突问题的解决,你说客户端先把大于
1的值更新,这时候服务器的值也是1,但是内容是变化了的;
可以考虑使用类似数据库的redo日志;
服务器和客户端数据修改前都记录日志(含精确的时间戳);
在客户端联网后,先将客户端离线期间的日志发送到服务器端,
服务器端按时间点插入日志(客户端服务端日志合并),redo日志;
然后,将数据同步到客户端;
应该参考git软件内部的实现,有冲突的时候分为可以自动合并和不可以自动合并
merge对于普通用户门槛太高 让用户选择一个版本基本就够了 其实最简单的方法就是让用户接受开机自启动 不知不觉完成同步,。,
感谢楼主分享,思路和我的完全一致,但是合并冲突的问题,以modify_num大的优先,以最后操作优先,有点不合理,虽然是极少数的情况,但是最好是让用户选择,当然这样会麻烦很多,不太容易控制。
很难达到理想状态,所以关于冲突问题,我也是按最大版本号优先的方式实现的。