知识卡片
分布式存储设计的三维目标:可扩展、整体成本、高可用,及冷热分级存储
内容
微博Feed分布式存储的设计要同时兼顾三个维度,任何一个单独拿出来优化都不足以支撑真实系统。可扩展性(Scale-out)关注的是数据规模持续增长时,能不能靠简单地加服务器解决问题,具体要回答两个子问题:扩容时如何把现有数据拆分到更多存储单元、扩容过程能不能不停机、不中断在线访问。整体成本关注的是不能因为要保证性能就无差别地使用最贵的硬件(如全部用高速存储),而应当根据数据的冷热访问级别,把不同热度的数据放在不同访问速度(也就是不同成本)的硬件上——这条原则背后的判断依据正是访问场景里提到的”热点集中在最近几天发表的数据”:既然大部分实际访问只会命中近期数据,那么把历史数据下沉到成本更低、访问相对慢一些的存储介质上,既不会显著影响用户体验,又能大幅节省整体存储成本。高可用性则要求引入类似从库(slave)的机制,既能在主库故障时提供容错,也能顺带分担一部分读请求的访问压力。这三个维度共同构成了一条评估分布式存储方案是否合格的检查清单:一个方案哪怕在扩展性上设计得再精巧,如果不考虑冷热数据分级导致成本失控,或者没有从库分担读压力和提供容错,都不能算是一个完整、可落地的存储层设计。
参考来源
- 位置:《高可用架构(第1卷)》第2章《高可用架构原理与分布式实践》"2.9 微博分布式存储考试题:案例讲解及作业精选"节,"2.9.2 设计"(源文件:_epub-src/OEBPS/Text/Chapter2_9_3.xhtml)
- 结论依据:原文列出Scale-out、整体成本、高可用性三个设计维度,并说明"建议可以根据不同的冷热访问级别,将数据存储在不同访问速度(成本)的硬件上",直接支撑本卡片的三维目标框架和冷热分级存储结论。
- 原始内容:设计同时需要以下三个方面:1.Scale-out……2.整体成本……建议可以根据不同的冷热访问级别,将数据存储在不同访问速度(成本)的硬件上。3.高可用性……可以考虑通过类似个slave也可在一定程度上分担读的访问压力。