





多终端系统数据同步的核心原理是:以服务端为单一数据源,各终端的本地操作先记录下来,再按规则合并到服务端,服务端再把最新状态推送给其他终端。难点不在"把数据传过去",而在多个终端同时改了同一条数据时怎么解决冲突,以及断网恢复后怎么把离线期间的操作补上去。主流做法是给每条数据带版本号或时间戳,冲突时按预先约定的规则取舍或提示人工处理。
同一套系统,用户可能在电脑上录入订单、在手机上审批、在小程序里查库存,三个终端看到的数据必须是一致的。如果每个终端各存一份、互不通气,就会出现手机上改了数量、电脑上还是旧值的混乱。同步机制就是让这些副本最终指向同一个正确状态。在阿坝县,销售团队外出用手机录客户、回办公室用电脑看报表,这种多端协作是常态,同步做不好直接影响业务判断。
所有数据以服务端存储为准,终端不做最终裁决。终端读数据从服务端拉,写数据把变更上报服务端,由服务端落库后再广播给其他在线终端。这样避免了多个终端互相改来改去。
服务端不为每次全量传输,而是记录每条数据的变更日志,终端只拉取自上次同步之后的增量。每次同步带上本地最后同步时间点,服务端返回这之后变化的数据。这样数据量再大,每次同步也只是传一小部分。
每条数据维护一个版本号,每次修改版本号加一。终端提交更新时带上它修改时基于的版本号,服务端发现该数据当前版本已经比这个新,说明期间被别人改过了,产生冲突。
常见策略有几种:后写覆盖,以最后一次提交为准,适合不那么关键的数据;字段级合并,不同终端改的是同一条记录的不同字段,各取所长自动合并,例如手机改了客户电话、电脑改了收货地址,两边都保留;提示人工处理,关键数据如金额、库存发生冲突时,不让系统自动决定,而是提示操作员看到底以哪个为准。在阿坝县,涉及库存和金额的场景,通常采用最后一种策略,宁可让人看一眼也不自动覆盖。

移动端经常在没网络的地方使用,用户离线时做的操作要先存在本地,联网后按顺序重放到服务端。关键是要保证重放顺序和用户操作顺序一致,且重复联网时同一条操作不会被重复提交——每笔本地操作给一个唯一标识,服务端按这个标识去重。
同步接口必须做幂等,同一条操作多次提交结果相同。涉及有先后依赖的操作,例如先建订单再加明细,本地要记录依赖关系,联网后按依赖顺序重放。
除了冲突解决,还要有定期全量校准:每隔一段时间终端和服务端对一次关键数据,发现漂移自动修正,防止某些增量因为网络问题丢了一直没补上。同时监控同步延迟,关键业务数据要求秒级到达,普通数据可以容忍分钟级。把增量同步、冲突解决、离线重放、定期校准这几层做好,多终端数据才能做到用户无感知的一致。
在实际业务里,多端同步最典型的场景是移动办公:外勤人员在手机上更新客户跟进记录,内勤在电脑上实时看到;门店在收银端下了单,后台库存即时扣减。这类场景对实时性要求高,通常用服务端推送加增量拉取结合的方式,保证改动后几秒内其他终端就能看到最新值。在阿坝县,做连锁零售和外勤管理类系统时,同步延迟和冲突处理是否顺畅,往往是用户评价系统好不好用的第一标准——数据老是对不上,功能再全也没人信。
同步是在用户背后默默做的事,设计目标是让用户感知不到它的存在。写操作要先在界面上即时反馈成功,再后台慢慢同步;同步失败不要直接打断用户,而是静默重试,实在失败了再温和提示。把技术复杂性藏在系统内部,用户只管正常使用,这才是多端同步设计的成熟状态。