频繁变化数据库业务如何实时推送前台?

2019-01-07 17:45:29 +08:00
 master13

请教各位大佬一个问题。我这个业务的数据库变化很频繁,比较频繁吧,通常几秒就会变化一次,要及时推送到前台。现在用的方法是每 1 秒查询一次数据库,如果有变化,就显示出来。

感觉这种做法不是很专业,特别是当很多 Client 共同使用前台时,查询频率很高,数据库负载增加。

前几天在外面吃饭,看到那种扫二维码一起点单,很多人扫了码,共同点单,有一个人点提交的话,这个“已提交”的通知会瞬间推送到所有正在使用前台点单的用户,这个是怎么实现的啊?难道也是每 1 秒查询一次吗?

求大佬解释和推荐有没有别的专业的做法?

1526 次点击
所在节点    问与答
7 条回复
wjfz
2019-01-07 17:57:36 +08:00
WebSocket
jmk92
2019-01-08 00:37:34 +08:00
架一层缓存层,数据存入读取都是走缓存,主动同步数据库里,你就算 0.1 秒查一次也无妨。
master13
2019-01-08 08:10:12 +08:00
@wjfz 学习了一下,能解决部分问题。但是即使服务端用 websocket 主动向 client 推送数据,服务端仍然需要频繁查询数据库,是把频繁的 jquery 移动到了服务端来做,感觉性能并没有得到提高。
master13
2019-01-08 08:12:12 +08:00
@jmk92 是主流的做法,目前我的做法是服务端每 1 秒查询一次,产生一个中间文件保存在服务端,比如叫 temp.txt 或者 result.json 之类的吧,然后客户端实际上是访问这个文件。访问文件有时候会遇到客户端浏览器缓存的问题,更新的他拿不到,很烦。

请问“缓存层”有哪些业内惯用或者推荐的吗?
tianyou666shen
2019-01-08 09:19:35 +08:00
文件 io 很慢的 缓存层说的是内存缓存产品 redis memcache 了解下?
master13
2019-01-08 11:41:59 +08:00
@tianyou666shen 学习了,感谢
jmk92
2019-01-08 14:35:03 +08:00
@master13 比较通用的一般就是#5 楼说的这些。缓存之所以快,是因为内存查询,你用文件查询同样占用 IO,和数据库有啥区别?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/524723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX