首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   master13 · 105 天前 · 477 次点击
    这是一个创建于 105 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    请问“缓存层”有哪些业内惯用或者推荐的吗?
        5
    tianyou666shen   104 天前
    文件 io 很慢的 缓存层说的是内存缓存产品 redis memcache 了解下?
        6
    master13   104 天前
    @tianyou666shen 学习了,感谢
        7
    jmk92   104 天前
    @master13 比较通用的一般就是#5 楼说的这些。缓存之所以快,是因为内存查询,你用文件查询同样占用 IO,和数据库有啥区别?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   860 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 15ms · UTC 20:23 · PVG 04:23 · LAX 13:23 · JFK 16:23
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1