当前位置:网站首页>理解分布式系统中的缓存架构(下)
理解分布式系统中的缓存架构(下)
2022-08-02 00:17:00 【倾听铃的声】
1. 分层缓存架构设计2. 缓存带来的复杂度问题数据一致性缓存穿透缓存雪崩缓存高可用缓存热点3. 业界案例技术挑战Feed缓存架构图架构特点参考
承接上一篇《理解分布式系统中的缓存架构(上)》,介绍了大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景,本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。
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带来的数据库访问压力
主要在数据架构、性能、储存成本、服务化等不同方面进行了优化增强
边栏推荐
- String splitting function strtok exercise
- 思维导图,UML在线画图工具
- JS中对事件代理的理解及其应用场景
- Multidimensional Correlation Time Series Modeling Method Based on Screening Partial Least Squares Regression of Correlation Variables
- Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)
- BGP 第一次实验
- 哪里有期货开户的正规途径?
- 严格模式,use strict
- Unknown CMake command "add_action_files"
- nodeJs--各种路径
猜你喜欢
随机推荐
PHP to read data from TXT file
期货开户手续费的秘密成了透明
管理基础知识19
C语言函数详解(1)【库函数与自定义函数】
管理基础知识17
【HCIP】BGP小型实验(联邦,优化)
实现删除-一个字符串中的指定字母,如:字符串“abcd”,删除其中的”a”字母,剩余”bcd”,也可以传递多个需要删除的字符,传递”ab”也可以做到删除”ab”,剩余”cd”。
flyway的快速入门教程
如何期货开户和选择期货公司?
Redis - message publish and subscribe
What is the function of the JSP Taglib directive?
交返是做日内交易的必要条件
渗透测试与攻防对抗——渗透测试基础
Disk and file system management
How does JSP use the page command to make the JSP file support Chinese encoding?
ICML 2022 | GraphFM:通过特征Momentum提升大规模GNN的训练
管理基础知识16
Kotlin协程:创建、启动、挂起、恢复
哪里有期货开户的正规途径?
22.卷积神经网络实战-Lenet5