当前位置: 首页 > news >正文

农产品网站建设及优化项目个人网页设计界面

农产品网站建设及优化项目,个人网页设计界面,wordpress wpdoc,怎么做网站的项目预算一、背景 在高并发场景中,为防止大量请求直接访问数据库,缓解数据库压力,常用的方式一般会增加缓存层起到缓冲作用,减少数据库压力。引入缓存,就会涉及到缓存与数据库中数据如何保持一致性问题,本文将对几…

一、背景

在高并发场景中,为防止大量请求直接访问数据库,缓解数据库压力,常用的方式一般会增加缓存层起到缓冲作用,减少数据库压力。引入缓存,就会涉及到缓存与数据库中数据如何保持一致性问题,本文将对几种缓存与数据库保证数据一致性的使用方式进行分析。为保证高并发性能,以下分析场景不考虑执行的原子性及加锁等强一致性要求的场景,仅追求最终一致性。

二、读取过程





•读缓存

•如果缓存里没有值,那就读取数据库的值

•同时把这个值写进缓存中




三、更新过程

更新操作有多种策略,各有优劣,主要针对此场景进行分析

策略1:先更新db,再删除缓存(常用的Cache-Aside Pattern旁路缓存)





问题:

1.如果更新db成功,删缓存失败,将导致数据不一致

2.极端场景,请求A读,B写

1)此时缓存刚好失效 2)A查库得到旧值 3)B更新DB成功

4)B删除缓存 5)A将查到的旧值更新到缓存中

此场景的发生需要步骤2)查db 始终慢于 3)的更新db,才能导致4)先于5)执行,通常db的查询是要快于写入的,所以此极端场景的产生过于严格,不易发生

策略2:先更新db,再更新缓存





问题:

1.并发更新场景下,更新缓存会导致数据不一致

2.根据读写比,考虑是否有必要频繁同步更新缓存,而且,如果构造缓存中数据过于复杂,或者数据更新频繁,但是读取并不频繁的情况,还会造成不必要的性能损耗

此种方式不推荐




策略3:先更新缓存,再更新db





同上,不推荐




策略4:先删缓存,再更新db





先删缓存,虽然解决了策略1中,后删缓存如果失败的场景,但也会发生不一致的问题

例如:请求 A 删除缓存,这时请求B来查,就会击穿到数据库,B读取到旧的值后写入缓存,A正常更新db,由于时间差导致数据不一致的情况




策略5:缓存延时双删





该策略兼容了策略1和策略4,解决了先删缓存还是后删缓存的问题,如策略1中,更新db后删缓存失败和策略4中的不一致场景,该策略可以将延时时间内(比如延时10ms)所造成的缓存脏数据,再次删除。但是,如果延时删缓存失败,策略4中不一致问题还会发生,同时延时的实现,如创建线程,或者引入mq异步,可能会增加系统复杂度问题。








策略6:变种双删,前置缓存过期时间





该策略针对策略1中后删缓存失败的场景,前置一层缓存数据过期时间(具体时间根据自身系统本身评估,如可覆盖db读写耗时或一致性容忍度等),更新db后就算删缓存失败,在expire时间后也能保证缓存中无数据。同时,前置expire失败,或者更新db失败,都不会影响数据一致。

能够解决策略4中的问题:请求 A 删除缓存,这时请求B来查,就会击穿到数据库,B读取到旧的值后写入缓存,A正常更新db,由于时间差导致数据不一致的情况,描述图如下:





本策略中步骤1为expire缓存,不会发生击穿缓存到数据库的情况,数据将直接返回。除非更极端情况,如下图:

expire时间没有覆盖住更新db的耗时,类似策略1中极端场景,此处不赘述





四、总结

对于每种方案策略,各有利弊,但一致性问题始终存在(文章开头排除了原子性和锁),只是发生的几率在一点点慢慢变小了,方案的评估不仅要根据自身系统的业务场景,如读写比、并发量、一致性容忍度,还要考虑系统复杂度,投入产出比等,寻找最合适的方案。

http://www.yayakq.cn/news/228/

相关文章:

  • 前端怎么在猪八戒网站接单做wordpress获取当前分类不带连接
  • 重庆石柱网站设计公司江阴网站建设推广
  • 网页设计素材网站花长沙如何做网站
  • 网站建设的总体需求分析给别人做网站的销售叫什么软件
  • 自建网站平台 优帮云刷粉网站推广快点
  • 有什么做礼品的卖家网站网络公司网络推广
  • 四川省住房和城乡建设厅网站打不开登录wordpress建立数据库吗
  • 滕州住房城乡建设局网站四川酒店网站建设
  • 子网站怎么建设天河外贸型网站建设
  • 上海做网站需要多少钱wordpress 添加付款
  • 电商网站建设实训步骤网页图片分辨率多少合适
  • 做网站具体收费石家庄网络公司推荐
  • 网站建设学多长时间淘宝客 网站选择WORDPRESS
  • 网站开发文档doc什么是公司主页
  • 镇海建设银行网站首页哪个平台做推广效果好
  • 重庆忠县网站建设公司哪家好怎么做淘宝客网站赚钱
  • 双城网站网站不能写入php文件
  • 电子商务系统网站开发总结网站栏目设计怎么写
  • 深圳外贸soho网站建设阿里邮箱企业版app下载
  • 阿里云做网站开发吗wordpress4.7.3下载
  • 网站建设售后服务内容移动端cpu天梯图
  • 怎样建免费个人网站商城小程序建设
  • 河南网站推广多少钱建网站要多少钱 东莞
  • 买了网站模版怎么做企业qq出售平台
  • 如何选择网站托管公司深圳商城网站设计电话
  • 网站建站案例php手机网站源码下载
  • dw做简单小说网站网站蜘蛛屏蔽怎样恢复
  • 如何建设旅游网站东莞品牌网站制作
  • 深圳住房和建设局网站预约放号做一个商务平台网站的费用
  • 网站的图片做多大尺寸网页设计网站规划报告