边缘缓存模式 Cache-Aside Pattern

按照业务需求, 在业务层缓存一定的数据以提升性能. 同时还要保持缓存数据和底层数据的一致性.

解决的问题

业务端通过缓存一定的数据避免重复访问底层, 从而拉升性能. 然而缓存数据和底层数据可能存在不一致, 业务端必须实现一定的缓存失效策略来尽可能保证一致性.

方案

很多缓存系统提供read-through, write-through/write-behind这样的基本操作.

  • read-through 就是先读缓存, 没找到就去底层拉数据, 然后更新缓存, 拉升读效率
  • write-through/write-behind 就是先写缓存, 如果缓存没命中, 就直接去底层那数据. 如果缓存命中的话, 那么业务线程就更新缓存内的数据, 后台线程把一段时间内积累的更新一次性刷回底层. 拉升写效率

类似这样的缓存系统对业务端都是透明的, 有特殊需求的话, 业务端很可能就要制定自己的失效策略, 以及决策是否使用写时缓存.


read-through

决策问题

  • 缓存的TTL 需要根据应用需求配置合理的TTL, 如果太短造成缓存连续失效, 那么这样的缓存就没有存在的意义. 如果太长有可能影响客户的使用体验. 缓存数据的选取也是一个问题, 传统上有LRU Clock-Pro等算法来帮助我们选取需要缓存的数据. 在实际应用中, 静态数据是必然可以被缓存在客户端的, 同时根据业务形态我们可以缓存周期性变化的数据,如一个每日凌晨更新的统计数据表. 类似的更新策略不能太复杂.

  • 缓存预分配 是否在应用启动前预分配, 甚至预先拉取数据. 如果这么做可以有效的提升启动时的性能. 在系统复杂低时主动拉取数据, 主动开辟大缓存空间等. 实际实现可能涉及到复杂的策略, 所以需要小心权衡

  • 一致性 由于不保证缓存和底层数据一致, 所以部分输出的结果可能是陈旧的, 业务是否能够接受这样的结果?

  • 本地缓存共享 在多进程情况下, 本地的多个进程可能都持有同一个数据的缓存. 但缓存内的数据却可能不一致, 这一方面带来了不一致性, 另外一方面也带来了空间上的浪费. 在同一台物理机上的进程是否应该共享缓存. 整个系统因此变的复杂和更难维护是否可以可以接受的?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 从一个数据存储按需加载数据到一个缓存中。该模式能够提高性能并且也有助于维护缓存中的数据和底层数据存储中的数据之间的...
    zlup阅读 2,049评论 0 0
  • 理论总结 它要解决什么样的问题? 数据的访问、存取、计算太慢、太不稳定、太消耗资源,同时,这样的操作存在重复性。因...
    jiangmo阅读 2,833评论 0 11
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,723评论 0 30
  • Load data on demand into a cache from a data store. This ...
    jorgensen阅读 5,132评论 0 2