一条数据分发到不确定数量的客户端,怎么在数据上标记哪些客户端已经同步过?
服务端一张数据表(数据量十万,且数据有可能发生变化),需要被多个客户端同步下去;
在各个客户端通过定时任务,定时去服务端请求,请求发生过改变的数据同步;
现在的处理方式是按照2的N次方给每个客户端一个个同步码(2,4,8,16,32.....):
数据表加了一个Integer类型字段例如tbbz,每个客户同步后将自己的同步码加现在tbbz的值,更新tbbz
每次请求的时候通过bitand来判断当前请求的客户端是否已经通不过该条数据;
当客户量小的时候没有问题,但是如果客户数量很多,同步码超过了数据类型的最大限制;
有没有更合适的方法能处理这种问题?
用某个字段来区分数据的“新旧”——如果数据只增不改用ID,如果数据可修改用更新的timestamp值。
假定用ID,那么每个客户端只要记录已同步数据的最大ID,下次同步从这个ID之后开始。