知识卡片
NoSQL存储平台:节点数上千后才真正划算的三大功能
内容
和[[SQL存储的三阶段演进:从直接使用到中间件再到统一存储平台]]相比,NoSQL在互联网行业几乎是基础标配——一方面它的数据结构(Memcache的key-value、Redis的复杂数据结构、MongoDB的文档结构)正好弥补了关系数据库存不了结构化数据这个短板,另一方面NoSQL方案普遍把性能当作核心卖点。更关键的是,NoSQL方案通常自带集群能力(比如Memcache的一致性Hash集群、Redis 3.0的集群功能),因此刚开始应用时非常方便,不像SQL分库分表那样一上来就要面对复杂的拆分问题,一般公司也不会在起步阶段就急着把NoSQL包装成统一存储平台。但如果公司发展很快、NoSQL节点规模涨到上千甚至几千(比如Memcache节点数),做统一存储平台就变得很有价值:一是能通过集中管理大幅提升运维效率,二是能大幅提升资源利用效率——2000台机器如果利用率能提升10%,就相当于省下200台机器,一年能省下几十万元的成本。统一存储平台主要提供三个功能:资源动态按需分配(同一台Memcache服务器可以根据内存利用率同时分给多个业务使用);资源自动化管理(新业务只需要申请要多少缓存空间,不需要关心具体是哪些服务器在为自己服务);故障自动化处理(某台Memcache服务器挂了,另一台备份服务器能立刻接管请求,不至于丢失大量缓存数据)。简单来说,只有几十台NoSQL服务器时做存储平台收益不大,但规模到了几千台,NoSQL存储平台才能产生真正显著的收益——这一点和SQL存储平台”规模够大才值得做”的逻辑是一致的。
参考来源
- 位置:《从零开始学架构》第40讲《互联网架构模板:"存储层"技术》"NoSQL"(源文件:_epub-src/OEBPS/text00003.html)
- 结论依据:原文说明"如果公司发展很快,例如 Memcache 的节点有上千甚至几千时,NoSQL 存储平台就很有意义了……2000 台机器,如果利用率能提升 10%,就可以减少 200 台机器",并列出资源动态分配、资源自动化管理、故障自动化处理三大功能,指出"如果只有几十台 NoSQL 服务器,做存储平台收益不大;但如果有几千台 NoSQL 服务器,NoSQL 存储平台就能够产生很大的收益",直接支撑本卡片结论。
- 原始内容:如果公司发展很快,例如 Memcache 的节点有上千甚至几千时,NoSQL 存储平台就很有意义了……资源动态按需动态分配……资源自动化管理……故障自动化处理……如果只有几十台 NoSQL 服务器,做存储平台收益不大;但如果有几千台 NoSQL 服务器,NoSQL 存储平台就能够产生很大的收益。