分享

直播平台开发,如果缓存中数据不一致发生,平台该如何挽救

 yunbaoKJ 2023-07-03 发布于山东

缓存是直播平台开发的重要帮手,在很多时候能够帮助平台化解访问压力,但缓存的应用也会出现新的问题,比如缓存数据的不一致性,比如缓存雪崩、缓存穿透等问题,面对这些问题,直播平台开发该准备什么样的解决方案呢?

  



一、数据不一致性产生的原因

1、先操作缓存,再写数据库成功之前,如果有读请求发生,可能导致旧数据进入缓存,引发数据的不一致性,在分布式环境下,数据的读写都是并发的,一个服务多机器部署对同一个数据进行读写,在数据库层面并不能保证完成顺序,就有可能后读的操作先完成,这时,如果直播平台开发不采用给缓存设置过期时间的策略,那该数据永远都是脏数据。

解决方案是:可采用更新前后双删除缓存策略;可以通过串行化解决,保证同一个数据的读写落在同一个后端服务商。

2、先操作数据库,再清除缓存,如果删除缓存失败了,就会出现数据不一致的问题。

  



二、如何防止缓存穿透、缓存雪崩、缓存击穿

1、缓存穿透,缓存穿透是说直播平台开发收到一个请求后,但是该请求缓存中不存在,只能去直播平台开发数据库中查询,然后放进缓存,但当有好多请求同时访问一个数据时,业务系统会把这些请求全发到数据库中,或者恶意构造一个逻辑上不存在的数据,然后大量发送这个请求,这样每次都会被发送到数据库,导致数据库挂掉。

解决方法,对于恶意访问,可以先做校验,对恶意数据直接过滤掉;或者是缓存空结果,对查询不存在的数据也记录在缓存中,减少查询数据库的次数。

  



2、缓存雪崩,是指当我们给直播平台开发所有的缓存设置了同样的过期时间,当某一时刻,整个缓存的数据全部过期了,然后瞬间所有的请求都被抛向了数据库,数据库就崩掉了。

解决方法,要么是分治,划分更小的缓存区间,按区间过期;要么是给每一个key的过期时间加一个随机值,避免同时过期,达到错峰刷新缓存的目的。

声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多