做者 陈彩华
文章转载交流请联系 caison@aliyun.com
复制代码
承接上一篇《理解分布式系统中的缓存架构(上)》,介绍了大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景,本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。html
常见的问题主要包括git
由于缓存属于持久化数据的一个副本,所以不可避免的会出现数据不一致问题。致使脏读或读不到数据的状况。数据不一致,通常是由于网络不稳定或节点故障致使github
问题出现的常见3个场景以及解决方案: sql
缓存通常是Key,value方式存在,当某一个Key不存在时会查询数据库,假如这个Key,一直不存在,则会频繁的请求数据库,对数据库形成访问压力。数据库
主要解决方案:后端
缓存是否高可用,须要根据实际的场景而定,并非全部业务都要求缓存高可用,须要结合具体业务,具体状况进行方案设计,例如临界点是是否对后端的数据库形成影响。缓存
主要解决方案:bash
一些特别热点的数据,高并发访问同一份缓存数据,致使缓存服务器压力过大。服务器
解决:复制多份缓存副本,把请求分散到多个缓存服务器上,减轻缓存热点致使的单台缓存服务器压力网络
案例主要参考新浪微博陈波的技术分享
新浪微博把SSD应用在分布式缓存场景中,将传统的Redis/MC + Mysql方式,扩展为 Redis/MC + SSD Cache + Mysql方式,SSD Cache做为L2缓存使用,第一下降了MC/Redis成本太高,容量小的问题,也解决了穿透DB带来的数据库访问压力
主要在数据架构、性能、储存成本、服务化等不一样方面进行了优化加强
更多精彩,欢迎关注做者公众号【分布式系统架构】