理解分布式系统中的缓存架构(下)

承接上一篇《理解分布式系统中的缓存架构(上)》,介绍了大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景,本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。

1 分层缓存架构设计

2 缓存带来的复杂度问题

常见的问题主要包括

  • 数据一致性
  • 缓存穿透
  • 缓存雪崩
  • 缓存高可用
  • 缓存热点 下面逐一介绍分析这些问题以及相应的解决方案。

数据一致性

因为缓存属于持久化数据的一个副本,因此不可避免的会出现数据不一致问题。导致脏读或读不到数据的情况。数据不一致,一般是因为网络不稳定或节点故障导致

问题出现的常见3个场景以及解决方案:

缓存穿透

缓存一般是Key,value方式存在,当某一个Key不存在时会查询数据库,假如这个Key,一直不存在,则会频繁的请求数据库,对数据库造成访问压力。

主要解决方案

  • 对结果为空的数据也进行缓存,当此key有数据后,清理缓存
  • 一定不存在的key,采用布隆过滤器,建立一个大的Bitmap中,查询时通过该bitmap过滤

缓存雪崩

缓存高可用

缓存是否高可用,需要根据实际的场景而定,并不是所有业务都要求缓存高可用,需要结合具体业务,具体情况进行方案设计,例如临界点是是否对后端的数据库造成影响。

主要解决方案

  • 分布式:实现数据的海量缓存
  • 复制:实现缓存数据节点的高可用

缓存热点

一些特别热点的数据,高并发访问同一份缓存数据,导致缓存服务器压力过大。

解决:复制多份缓存副本,把请求分散到多个缓存服务器上,减轻缓存热点导致的单台缓存服务器压力

3 业界案例

案例主要参考新浪微博陈波的技术分享

技术挑战

Feed缓存架构图

架构特点

新浪微博把SSD应用在分布式缓存场景中,将传统的Redis/MC + Mysql方式,扩展为 Redis/MC + SSD Cache + Mysql方式,SSD Cache作为L2缓存使用,第一降低了MC/Redis成本过高,容量小的问题,也解决了穿透DB带来的数据库访问压力

主要在数据架构、性能、储存成本、服务化等不同方面进行了优化增强

参考:

从0开始学架构 —— Alibaba 李运华

Java核心技术36讲—— Oracle 杨晓峰

微博Cache架构设计实践 —— 陈波

缓存在大型分布式系统中的最佳应用 —— 侯忠好

缓存,并发更新的大坑? —— 58沈剑

分布式缓存设计—— crossoverJie

原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文发表时间:2018-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恰同学骚年

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

992
来自专栏Linyb极客之路

互联网常见架构接口压测性能分析及调优手段建议

常见的互联网架构中,一般都能看到spring+mybatis+mysql+redis搭配的身影,在我所服务的公司亦是如此。一般来说,应用内部的接口都是直接调用的...

2005
来自专栏服务端技术杂谈

动手撸一个规则引擎

最开始听说过规则引擎可能是一个类似于OA的系统中,通过规则配置,让一个审批流程得到配置化和规则化。

1704
来自专栏vue学习

8、手机适配问题之rem和lib-flexible

flexible方案是手淘经过多年的摸索和实战,总结出的一套移动端适配方案,这里我推荐一篇w3c大漠老师的一篇文章使用Flexible实现手淘H5页面的终端适配...

1552
来自专栏转载gongluck的CSDN博客

python笔记:#006#程序执行原理

程序执行原理(科普) 目标 计算机中的 三大件 程序执行的原理 程序的作用 01. 计算机中的三大件 计算机中包含有较多的硬件,但是一个程序要运行,有 三个 核...

41810
来自专栏Android 开发者

Android 开发者 | 应用兼容性注意事项

2633
来自专栏程序员互动联盟

【专业技术】Node.js 究竟是什么?

简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页...

3317
来自专栏WeTest质量开放平台团队的专栏

http性能测试点滴

原文链接:https://wetest.qq.com/lab/view/410.html

1734
来自专栏FreeBuf

利用HTTP参数污染方式绕过谷歌reCAPTCHA验证机制

今年初,我上报了一个谷歌reCAPTCHA验证码绕过漏洞,该漏洞在于能用一种HTTP参数污染的不安全方式,让Web页面上的reCAPTCHA构造一个针对 /re...

2963
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙回顾|接口测试用例设计

活动介绍 TMQ第四十期在线沙龙分享活动圆满结束啦! 本次分享的主题:接口测试用例设计 共有470位测试小伙伴报名参加活动。 想知道活动分享了啥吗? 请往下看吧...

4698

扫码关注云+社区

领取腾讯云代金券