为了账号安全,请及时绑定邮箱和手机立即绑定

可有其他更优的方案实现类似Evernote的多客户端同步?

可有其他更优的方案实现类似Evernote的多客户端同步?

叮当猫咪 2023-05-04 09:05:22
这里说的同步是:手机App内有一个sqlite的数据库,以便他离线时可以增加一些数据,例如拍的照片以及写的文字等.当联网时,自动把离线时写的东西提交给服务器同时,如果用其他客户端改变的旧内容或删除了旧文章,那么在App里也做出对应的修改和删除,保证本地App与服务器始终是一模一样的目前采取的方案是按最后修改时间来做处理,如果ID相同的项目,始终以修改时间最新的那个作为标准,如果App本地数据库出现有服务器不存在的项目,那么就把本地的删除.
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

要判断谁是【最新版本】并不容易。在网络上,你不能保证时钟是同步的。
目前我改成所有更新到服务器的数据,都用服务器时间来更新时间戳,然后将该时间返回给客户端,客户端修改自己数据的时间跟服务器上一样

查看完整回答
反对 回复 2023-05-06
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

自己没有动手试过,但是也许可以试一下类似Git的同步方式?commit和update分离。 服务器端记录所有的更新/提交信息,客户端记录从上一次的同步时间(如果有的话)后最终的修改记录(添加/删除应该是一样的),然后客户端把修改记录发给服务器(同一账户的多客户端可以通过消息队列的方式排队进行更新),当然,只有最后一个commit后发送更新请求的客户端能获得全部更新

当然,遗留问题就是指向同一个文件的不同修改造成的冲突的问题,没想好该怎么处理……要不和git一样提醒用户自己手动解决?


查看完整回答
反对 回复 2023-05-06
  • 2 回答
  • 0 关注
  • 433 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信