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

wordpress 列表株洲seo优化官网

wordpress 列表,株洲seo优化官网,深圳建立网站的公司,开源网站开发文档下载一、什么是数据库和缓存双写一致性? 在分布式系统中,数据库和缓存会搭配一起使用,以此来保证程序的整体查询性能。也就说,分布式系统为了缓解数据库查询的压力,会将查出来的数据保存在缓存中,下次再查询时…

一、什么是数据库和缓存双写一致性?

在分布式系统中,数据库和缓存会搭配一起使用,以此来保证程序的整体查询性能。也就说,分布式系统为了缓解数据库查询的压力,会将查出来的数据保存在缓存中,下次再查询时,直接走缓存系统,而不再查询数据库,这样就极大的提高了整体的查询性能。

1.1 为什么缓存比数据库快?

缓存之所以比数据库快的主要原因有以下 3 点:

  • 内存访问速度快:缓存通常将数据存储在内存中,而数据库将数据存储在磁盘上。相比于磁盘访问,内存访问速度更快,可以达到纳秒级别的读取速度,远远快于数据库的毫秒级别的读取速度。

  • IO 操作次数少:数据库通常需要进行磁盘 IO 操作,包括读取和写入磁盘数据。而缓存将数据存储在内存中,避免了磁盘 IO 的开销。内存访问不需要进行磁盘寻址和机械运动,相对来说速度更快。

  • 特殊的数据结构:缓存的数据结构通常为 key-value 形式的,也就是说缓存可以做到任何数据量级下的查询数据复杂度为 O(1),所以它的查询效率是非常高的;而数据库采用的是传统数据结构设计,可能需要查询二叉树、或全文搜索、或回表查询等操作,所以其查询性能是远低于缓存系统的。

1.2 缓存一致性问题

虽然缓存可以极大的提高查询性能,但同时也带来的新的问题:数据库和缓存一致性的问题。

具体来说,在一个常见的应用场景中,当更新数据库的操作完成后,需要同步更新缓存,以保证缓存中的数据与数据库中的数据保持一致。然而,由于数据库和缓存是两个不同的组件,它们的数据更新操作是异步的,可能存在以下问题:

  1. 数据延迟:数据库更新和缓存更新之间存在时间延迟,导致缓存中的数据不是最新的。这可能会引起数据的不一致,当其他请求读取数据时,可能会读取到旧的数据。

  2. 更新失败:在尝试更新缓存时,可能出现更新失败的情况。例如,缓存节点暂时不可用,网络故障等。如果更新缓存失败而未进行适当的处理,也会导致数据库和缓存之间的数据不一致。

也就说,因为以上原因,可能会导致 A 用户和 B 用户执行了同一个查询操作,但是得到了完全不同的结果,这就是数据库和缓存的一致性问题。


二、如何解决双写一致性问题?

解决缓存和数据库一致问题的常见解决方案有以下 4 种:

  1. 先修改数据库,后更新缓存。

  2. 先更新缓存,后修改数据库。

  3. 先修改数据库,后删除缓存。

  4. 先删除缓存,后修改数据库。

然而,前 3 种解决方案,有同一个问题,也就是当第一步操作执行完之后,第二步未执行的情况下,就会导致数据库和缓存的一致性问题,例如第一步执行完之后,系统掉电了,那么一致性问题就会一直存在。

相比之下,第 4 种解决方案(先删除缓存,后修改数据库)相比于前三种解决方案更有优势,起码它保证了双方都未执行成功,那么从数据一致性层面来讲,第 4 种方案起码保证了一定的数据一致性,然而第 4 种执行方案依然存在其他问题,例如以下这几个:

  1. 业务完整性问题:程序只执行了一半,第一步执行完了但第二步未执行的情况。

  2. 并发保存旧值的问题:在并发环境下,第四种方案可能会导致缓存保存旧值的情况,例如以下执行情况:


三、消息队列 + 延迟双删策略

双写一致性问题的最终解决方案是:消息队列 + 延迟双删策略。

3.1 为什么要使用消息队列?

因为消息队列里面有消息确认机制,它可以保证我们执行完第一步之后,即时掉电重启的情况,依然可以执行后续的流程,因为之前的消息,未进行消息确认,所以程序重启之后,会继续执行后续的流程,这样就保证了业务执行的完整性。

3.2 什么是延迟双删?

延迟双删指的是删除两次缓存(并且最后一次是延迟删除),具体执行流程如下:

  1. 删除缓存

  2. 更新数据库

  3. 延迟一会再删除缓存

最后一次延迟删除缓存的原因是,为了避免上面因为并发问题导致保存旧值的情况发生,所以会延迟一段时间之后再进行删除操作。这样即使有并发问题,也能最大限度的解决保存旧值的情况,因为是延迟之后删除的,所以即使因为并发问题保存了旧值,但延迟一段时间之后旧值就会被删除,那么这样就自然而然的保证了数据库和缓存的最终一致性。

总结

数据库和缓存双写一致性问题是一道经典的面试题,最初解决方案是先更新数据库、再删除缓存,然而如果发生掉电情况,只执行了前一步操作,那么缓存和数据库就出现了不一致性的问题。为了解决这个问题,所以通常会采用延迟双删 + 消息队列来保证业务的完整执行和数据一致性问题。

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

相关文章:

  • 怎么利用网站做产品推广网站建设图片教程视频
  • 网站建设资料总结网站推广外包
  • 光山县住房和城乡建设局网站微信公众号商城怎么制作
  • idea可以做网站吗产品网站建设公司哪家好
  • 购物网站最近浏览怎么做早期做的网站支持现在的网速吗
  • 德州建设公司网站网站防护空间
  • 做电影网站如何规避版权怎么注册域名邮箱
  • 培训网站图片全网万能搜索引擎
  • flash网站导航条怎么做哈尔滨seo排名优化公司价格
  • 电商平台网站多少钱注册页面模板
  • 网站建设 陕icp单页面优化的重点
  • 有设计师做的装修效果图的网站卡盟代网刷24小时自助下单
  • 游戏网站平台大全游戏网有创意的广告公司名称
  • flash个人网站设计设计网站建设方案
  • 信阳做网站的公司厦门市房地产建设局网站
  • 中山如何建网站代运营公司有哪些
  • 给网站增加功能怎么做wordpress开发教程 pdf
  • 图片库网站建设更新网站怎么弄
  • 烟台网站制作工具公众号 导入wordpress
  • 网站编程技术 吉林出版集团股份有限公司网站插件代码下载
  • 网站怎么做app如何给网站做推广
  • 家教补习中心网站建设新媒体 数字营销 网站建设
  • 上海建个人网站比较好的公司北京建网站公司价格
  • 企业网站宣传册应该哪个部门做东莞市外贸网站建设企业
  • 建设网站需要了解什么百度风云榜游戏排行榜
  • 如何在学校内网建立网站设计公司推荐
  • 网站开发人员 怎么保存成都广告公司名单
  • 个性化推荐网站开发源码站长工具友链查询
  • 共享虚拟主机 几个网站怎么建立和设计公司网站
  • 新网站建设 英文翻译四川手机网站设计方案