服务器端缓存失效的应对方法经验总结

缓存失效情况举例

看下这个段伪代码:

local value = get_from_cache(key)

if not value then

value = query_db(sql)

set_to_cache(value, timeout = 100)

end

return value

看上去没有问题,在单元测试情况下,也不会有异常。

但是,进行压力测试的时候,你会发现,每隔100秒,数据库的查询就会出现一次峰值。如果你的cache失效时间设置的比较长,那么这个问题被发现的机率就会降低。

为什么会出现峰值呢?想象一下,在cache失效的瞬间,如果并发请求有1000条同时到了 query_db(sql) 这个函数会怎样?没错,会有1000个请求打向数据库。这就是缓存失效瞬间引起的风暴。它有一个英文名,叫 “dog-pile effect”。

怎么解决?自然的想法是发现缓存失效后,加一把锁来控制数据库的请求。具体的细节,春哥在lua-resty-lock的文档里面做了详细的说明,我就不重复了,请看这里。多说一句,lua-resty-lock库本身已经替你完成了wait for lock的过程,看代码的时候需要注意下这个细节。

传统缓存失效应对策略 为了提高业务访问速度,提升业务读并发,很多用户都会在业务架构中引入缓存层。业务所有读请求全部路由到缓存层,通过缓存的内存读取机制大大提升业务读取性能。缓存中的数据不能持久化 ,一旦缓存异常退出,那么内存中的数据就会丢失,所以为了保证数据完整,业务的更新数据会落地到持久化存储中,例如DB。目前云用户的业务架构一般如下图:

服务器端缓存失效的应对方法经验总结

在上图中,大家可以看到,用户的更新数据直接持久化到DB, 业务读请求直接请求缓存数据,所以业务需要解决缓存失效问题,即解决因为数据变更导致缓存中的数据失效的问题。 目前业务解决缓存失效问题的解决方法一般是业务实现DB、缓存双写。通过业务双写解决缓存失效,存在如下的问题:

代码侵入性比较强,需要双写两份存储,任何对DB的数据变更,都需要同时更新缓存,代码层面后期可维护程度不高

用户请求线程里同步调用缓存,对缓存存在强以来,遇到缓存超时等异常时,没有办法做到有效的重试,遇到异常给用户返回系统错误、操作失败等信息,严重影响用户体验

用户请求线程里同步完成DB、缓存双写,变更请求链路长,访问延迟大,影响用户体验

RDS数据订阅消费,轻松解决缓存失效

在阿里巴巴内部同样也遇到了缓存失效的问题,随着业务架构得不断调整优化,我们已经沉淀出一套高可靠、极优雅得缓存失效架构。即通过数据传输提供的数据订阅功能,异步获取DB(例如公共云上的RDS)的增量数据,根据增量数据进行缓存失效。具体的架构类似下图:

服务器端缓存失效的应对方法经验总结

在这个架构里面,缓存更新流程如下:

1.业务完成DB更新后即返回请求

2.数据订阅通过日志解析方式实时解析并订阅DB的增量更新数据,当发现DB有数据更新时,将增量数据推送给下游消费者

3.下游消费业务一旦接收到增量更新数据,即调用消费线程进行缓存更新

至此完成整个缓存更新过程。

从上面的缓存失效流程,可以看出这种缓存失效机制:

1.更新路径短,延迟低: 缓存失效为异步流程,业务更新DB完成后直接返回,不需要关心缓存失效流程,整个更新路径短,更新延迟低

2.应用简单可靠:应用无需实现复杂双写逻辑,只需启动异步线程监听增量数据,更新缓存数据即可

3.应用更新无性能消耗:因为数据订阅是通过解析DB的增量日志来获取增量数据,获取数据的过程对业务、DB性能无损

小结 数据订阅功能为阿里云数据传输提供的一种数据分发方式。通过数据订阅实现的缓存失效策略,让业务更新更快捷,让业务逻辑更简单、更可靠。

数据订阅只是数据传输提供的一种传输方式,除数据订阅之外,数据传输还提供了数据实时同步,不停服迁移等多种传输能力,如需了解数据传输更多详情,请猛击数据传输。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/894349.html

(0)
上一篇 2025年1月4日 00:03:29
下一篇 2025年1月4日 00:03:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 76岁“高龄”的服务器厂商浪潮inspur,为什么成了一家AI企业?

    数字经济正引领新一轮的经济增长,作为数字时代最重要的ICT基础设施,国内服务器需求持续高景气。 近期,IDC发布了最新全球服务器市场季度报告,全球前三供应商排名发生变化,国内服务器龙头浪潮inspur(下称“浪潮”)以10.1%的市占率,超…

    AI智能 2025年1月5日
    100
  • 王牌云裸金属服务器正式发布惠及千万中小企业

    近期,九曲集团旗下王牌云推出自主管理的裸金属服务器租赁产品——高性能物理服务器, 裸金属服务器早在2009年,当公有云正式问世以来,以低配置为主快速、灵活、成本低的强大优势快速席卷国内市场的时候,大部分中小企业上云,王牌云作为2003年成立…

    2025年1月4日
    300
  • 2019年5月最新阿里云服务器ECS官方价格表及优惠报价

    2018年度阿里云占据国内云计算市场50%以上的份额,很多用户纷纷将网站,小程序,公众号,APP等部署到阿里云服务器上。企业在选择合适的云服务器时,往往需要选择合适的机型。目前阿里云服务器上总计有数十种实例规格族,这些规格族价格和配置各不相…

    2025年1月4日
    300
  • 共建鲲鹏生态,华为TaiShan服务器与XSKY SDS产品完成认证

    华为智能计算事业部与XSKY产品部门分别认可了彼此产品的功能、性能、可靠性、稳定性测试结果,发布TaiShan服务器平台与XSKY多款软件定义存储产品的认证证明。 经长时间测试表明,TaiShan服务器基于多核架构、高并发的计算优势,结合国…

    2025年1月4日
    300
  • 怎么正确的为网站选择服务器

    电商时代的崛起,让很多的人知道了互联网经济的力量,所以很多的企业通过搭建网站,开展在线业务,作为企业做大做强的另一个跳板,与此同时我们需要围绕网站展开一系列的讨论,比如说网站的搭建很简单,但是我们需要知道如果要长期的做下去,拥有一个好的服务…

    服务器 2025年1月4日
    100
  • 怎么判断服务器好坏呢

    服务器对于有的人来说是比较陌生的,但是对于一些互联网行业就是熟悉不过的了,因为公司需要搭建网站还是数据的存放都是会接触到服务器的。很多的新手在选择服务器的时候,因为自己不太了解,往往会根据价格还是同行的推荐去选择服务器。但是这样对服务器的选…

    服务器 2025年1月4日
    100
  • 阿里云10月份2核8GB 5M带宽云主机2折优惠,一次抢购3年无忧

    吾趣阿里云网又双叒叕给大家带来最新的云服务器优惠资讯了,本次给大家带来的是阿里云10月份爆款主机限时抢活动。本次活动内的爆款产品时长全部为3年,且通通2折出售,价格比隔壁云的时长1年的云服务器还要便宜哦。 活动地址:https://www.…

    2025年1月4日
    100
  • 11.11别让剁手党影响游戏、视频网速

    数字化的网络格局打破人们原本规则的生活形态,从期盼周末、规划购物,到无时无刻抢货;从文字记录、翻书摘要,到随时随地阅读;从安排见面、定点会议,到即刻准备接收任务……对网络用户而言,数字转型不仅仅覆盖线上与线下,更是将我们的生活片段打碎,给予…

    服务器 2025年1月4日
    100
  • “11.11”服务器交战守则

    数字化信息时代,电子商务搭乘这班顺风车,获得爆发式的增长与发展,大数据与电商的融合趋势,成就电子商务发展的现状。电商企业如何才能获得消费者、合作商家的长期信赖与支持成为了其能否持续发展的关键问题所在。 阿里巴巴可谓是“11.11”背后最大胜…

    服务器 2025年1月4日
    100
  • HOLD住服务器 顺利“11.11”

    随着“11.11”临近,各大线上线下平台都不断加大促销力度,吸引广大网络用户的关注,也让市场着实注意到互联网、大数据产业的快速发展形势。企业在策划销售策略时,十分自然地按照线上线下相结合的常规意识进行,体现数字化运营的发展趋势。 “11.1…

    服务器 2025年1月4日
    100

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信