我希望创建一个应用程序,类似于Evernote应用程序,可以在多个设备之间同步数据。我已经了解了Firebase和Couchbase,但因为价格和托管问题,我不想使用这两个服务。我想自己创建同步功能。
客户端为Android,使用Google云端点创建API并使用Appengine后端。
需要实现在线和离线同步功能。
例如笔记应用程序(类似于Evernote),一个简单的场景是假设用户已经登录到多个设备并在一个设备上创建了一条笔记,它应该与所有其他设备同步。设备X处于离线状态并且也创建了一个文档,但是它离线时无法同步。当设备X联网时,它必须获取服务器的最新状态并添加其创建的笔记,并将其与多个设备同步。
场景2:
我想象一个同步数据会成为问题的场景。假设应用程序应在未连接到Internet时运行,因此无法与中央服务器通信。所以:
- 用户A与B离线并编辑记录#100。 - 用户C离线并删除记录#100。 - 用户C上线(应该在服务器上删除记录#100)。 - 用户A和B上线,但他们编辑的记录不存在。 - 会出现类似上述情况的各种情况。
还有更复杂的情况,请问是否有人已经做过这样的事情,你们都面临了哪些挑战?
最佳解决方案是什么?如何实施?
简而言之,需要像Firebase同步或Couchbase同步一样的逻辑。
客户端为Android,使用Google云端点创建API并使用Appengine后端。
需要实现在线和离线同步功能。
例如笔记应用程序(类似于Evernote),一个简单的场景是假设用户已经登录到多个设备并在一个设备上创建了一条笔记,它应该与所有其他设备同步。设备X处于离线状态并且也创建了一个文档,但是它离线时无法同步。当设备X联网时,它必须获取服务器的最新状态并添加其创建的笔记,并将其与多个设备同步。
场景2:
我想象一个同步数据会成为问题的场景。假设应用程序应在未连接到Internet时运行,因此无法与中央服务器通信。所以:
- 用户A与B离线并编辑记录#100。 - 用户C离线并删除记录#100。 - 用户C上线(应该在服务器上删除记录#100)。 - 用户A和B上线,但他们编辑的记录不存在。 - 会出现类似上述情况的各种情况。
还有更复杂的情况,请问是否有人已经做过这样的事情,你们都面临了哪些挑战?
最佳解决方案是什么?如何实施?
简而言之,需要像Firebase同步或Couchbase同步一样的逻辑。