多个客户端通过轮询的方式向服务端请求数据,服务端每次只返回更新或者新增的数据。这该怎么设计?
发布于 7 年前 作者 panyunyi 3819 次浏览 来自 问答

场景中不能使用socket长链接,所以只能通过客户端轮询的方式进行数据更新。 场景: 1.有多个客户端定时请求数据 2.每次请求数据返回多张表中的更新/新增的数据列表(只返回更新/新增的数据) 我的思路是: 1.建立一张表管理要同步数据的表的版本 例如:table1 001 2.数据表中的每条数据有一个版本号字段 table1 {id:1,name:test,ver:001} {id:2,name:test2,ver:001} 3.后台数据有更新的话,先获取版本表里table1的版本号,然后更新的这条数据的ver为table1的版本号+1。 table1 001 update,insert操作: table 003 {id:1,name:test1,ver:002} {id:2,name:test2,ver:001} {id:3,name:test3,ver:003} 这里有个问题,因为执行了两次数据变更的操作,每次变更的时候都先要获取表的版本号并累加1。感觉这样做很蛋疼的啊。。。。 4.客户端第一次同步完后数据的版本号是001,进行访问的时候带上001作为参数 post table1:{ver:001} 5.比较table1中大于001的数据都输出,客户端保存最大的版本号作为table1的版本号,此时为003,下次请求用003作为参数。

请问各位有啥更好的办法不?我实在想不出了。。。指点一下,非常感谢!

2 回复

表中增加数据创建时间和更新时间日期字段,每次定时请求数据传入上次请求时间,查询表中创建时间或者更新时间在这次传过来的时间之后的数据

@hqianbin 好主意啊

回到顶部