数据延迟问题导致页面即时刷新数据不全问题如何从业务中解决

        我们经常遇到这种业务场景,就是用户在列表中新增一条数据,我们会立即刷新页面,将新增数据按照业务规则显示在列表中,那传统的单库存储这是很好解决的,但是当下由于数据量过大或者单库负载太大,我们采用了去中心化的分布式结构来存储数据,或者在分布式存储的基础上,查询有时另一套集群来做专门的查询,比如ES,那必将有数据延迟问题发生,因为两次读写都是由服务器集群随机选举出来的master决定到哪台机器上执行的,那就训存在数据同步延迟,可能是几十毫秒的样子,以前公司是那样,这就导致,我们添加完数据后前端立刻发ajax请求后端刷新列表,90%的情况新增的数据没有请求到,这就会有很不好的用户体验,开始想让用户手动刷新,这个时间间隔数据早已经同步完成,但是用户体验极其不好,但是自动刷新也体验不好,用户会以为数据没有添加进去,导致会重复添加,这时底层有时候这个数据延迟的问题很难解决,只能尽可能降低,那么我们改怎么办呢??

       从业务入手

      第一:首先新增的数据如果还是按照某种业务排序规则直接参与排序就有问题,比如A用户有100条数据按照B规则排序,分页显示每页10条,这是很正常的处理方式,但是如果新增的业务数据按照B排序没有排在第一页,即使我们立即刷新列表拿到了数据,用户也是在第一页看不见的,而系统可能又提示新增成功了,如果我是用户我还是会以为自己数据新增失败了,重复点击添加尝试,这就会给用户误导,那第一就是新增的数据不参与排序,直接显示在页面上的第一条,当用户再次刷新时在参与排序,这样相对好一些,虽然也会有可能刷新后数据不再当前页面了。

     第二:解决不能立即获取到问题,不能获取到没关系,我这我们的方案是不进行页面立即刷新,用户新增后,后端直接返回当前添加的数据的数据库主键id以及其他关键信息,因为接下来对这个数据操作时要用主键来进行接下来的操作,当前端接收到后端返回的新状态成功后,直接在前端渲染这条数据在列表首行,其他数据不动,这样就不需要请求后端接口刷新列表数据了,也解决了数据延迟问题,相对来说用户体验好一些,还是那句话只是提供一个思路,也希望能有更多的人来一起讨论不同的场景不同的方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值