了解分布式系统中的缓存架构(下)
来源:caison     阅读:797
鱼掌柜
发布于 2018-07-09 22:13
查看主页
作者 陈彩华文章转载交流请联络 caison@aliyun.com

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

1 分层缓存架构设计

分层缓存架构分层缓存架构请求过程

2 缓存带来的复杂度问题

常见的问题主要包括

数据一致性

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

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


数据一致性问题场景及处理

缓存穿透

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

主要处理方案

缓存雪崩

缓存雪崩

缓存高可使用

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

主要处理方案

缓存热点

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

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

3 业界案例

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

技术挑战

技术挑战

Feed缓存架构图

Feed缓存架构

架构特点

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

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


架构关注点

参考:

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

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

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

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

缓存,并发升级的大坑? —— 58沈剑

分布式缓存设计—— crossoverJie

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
小程序开发之nginx下搭载DV配置让全站支持https协议
解析Spring旗下顶级项目,基于SpringBoot+Cloud构建微云架构
Hement:MVP架构中的网络框架(RxJava2+Retrofit2+RxAndroid)(二)
15岁成杀人犯,监狱里学编程,37岁获释后年薪70万
swift 开发欢迎界面的小实例
首页
搜索
订单
购物车
我的