程序员生存指南之热点数据管理设计

北京白癜风专科医院在哪里 https://wapjbk.39.net/yiyuanfengcai/lx_bjzkbdfyy/

正如很多行业存在二八理论一样,IT系统也存在这个现象,总有一部分数据被高频使用,从而成了热点数据。如何有效管理这些热点数据,提升数据的访问效率是软件工程师在一直努力和优化的地方。

缓存

当一部分数据被验证为热点数据以后,将其缓存起来通过访问缓存而非数据库来减少耗时是非常直接的想法。不过缓存并非包治百病,它仍受限于一定的使用范围。

适用场景

1、最为理想的数据是更新频率低的偏静态的热点数据,例如机构树、黑白名单等,因为这可以显著减少缓存和数据源之间的数据同步工作。

2、当数据需要一定的更新频率但仍呈现以查询为主更新为辅的特征,我们就需要设计一套运行良好的二级更新方案,以确保程序能按照正确的逻辑工作,那么如何来设计这套二级更新方案,就是我们接下来讨论的重点。

数据更新

使用缓存+数据库的方案的设计关键点在于一套运行良好的数据更新机制,只有更新机制对了才能保障程序按照正确的逻辑运行。对于缓存+数据库的更新,我们通常会有几种思路:1、先更新数据库再更新缓存;2、先删除缓存再更新数据库;、先更新数据库再更新删除缓存。

先更新数据库再更新缓存

这种方案的缺陷是比较明显的,我们一起来看看下面的情况:

(红蓝线程更新示意图)

如上图,可以非常容易看出,先更新DB的红线程在更新缓存值时却晚于蓝线程,这导致了DB与缓存的值并不一样,缓存会对外长期提供错误的值,导致系统运行逻辑错误。多数情况下,这种错误都是无法接受的,所以这种更新模式不能使用。

购买专栏解锁剩余72%


转载请注明:http://www.zjiaren.com/kfff/kfff/16555.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了