客户端、服务端数据云同步设计思路

在一些股票软件中,都会有自选模块,涉及到自选的添加与删除,与此同事,多手机之间、手机和网页之间等方面都会涉及到数据同步的问题。

根据不同的需求场景,可以将自选处理分为阻塞和非阻塞两种用户交互形式。

阻塞

阻塞形式为对自选进行修改时都要触发联网使得网络端数据进行及时修改,但是该种情况会引起以下几个问题。

  • 每次修改都要联网,如果联网效果不好。会产生以下两种不足。

    如果联网时阻止用户操作:用户长时间不能进行操作,影响用户体验

    如果联网时不阻止用户操作:如果用户进入到其它页面,才返回回来对应的请求结果,再弹出相应的toast提示,使得toast提示和用户所在界面不吻合的问题。

  • 每次网络数据请求都包含数据的请求与接收,那么如果请求数据发送给服务端,但是由于一些原因客户端没有接收到服务端的相关结果,那么本地的数据和服务端的数据就会产生差异。

非阻塞

对于非阻塞同步,由于将服务端的版本数据下载到本地之后,会覆盖本地的相关修改,因此每次修改本地数据的同时都要将对应的sql语句存储到Change表中来。这就实现了每次本地的数据修改都有记录,每次同步的时候,都是先确保本地的数据和服务端数据相同,然后执行sql数据使得本地数据是服务端和本地两处修改后的最新数据,最后将本地的最新数据上传到服务端,并将本地的sql语句数据删除。

;