现代应用程序不断变化,随着新要求的发展而发展,并且存在于对资源的不同需求的环境中。扩展应用程序可以根据资源需求适当调整其大小,以确保客户满意并降低基础设施成本。

如果您不知道如何有效地扩展,您不仅会损害您的应用程序,还会给您的运营团队带来不必要的压力。手动尝试确定何时扩大或扩大规模非常困难。如果您购买更多基础设施来适应高峰流量,那么当负载不是高峰时,您可能会超支。如果您以平均负载为目标,流量高峰将影响您的应用程序性能,并且当流量下降时,这些资源将被闲置。

什么是纵向扩展与横向扩展

横向扩展(「Scale-out」)或水平缩放与纵向扩展(「Scale-up」)或垂直缩放形成对比。

扩展云资源的想法可能很直观。随着您的云工作负载发生变化,可能需要增加基础架构以支持增加的负载,或者在需求低时减少基础架构可能是有意义的。“向上或向外”部分可能不太直观。横向扩展是并行添加更多等效功能组件以分散负载。这将从两个负载平衡的 Web 服务器实例变为三个实例。相比之下,扩大规模是使组件更大或更快以处理更大的负载。这会将您的应用程序移动到具有 2 个 CPU 的虚拟服务器 (VM) 到具有 3 个 CPU 的虚拟服务器。缩减则相反。

两个比喻

火车动力

传统火车和动车。传统的存储Scale-up架构的存储就好像传统的火车一样,当后面的磁盘越挂越多的时候,控制器性能以及背板带宽却不能相应提升,因此传统存储在磁盘容量扩容到一定程度时候,往往性能下降。

集群存储就好像新一代的动车组火车一样,当火车车厢增加的时候,前面的火车头动力也随之增加,因此不会发生性能瓶颈。

所谓动车组的设计理念和传统火车设计理念的最大区别在于传统火车主要动力来自于火车头(就像传统模块化阵列的两个控制器),而动车组则不一样,除了车头配有动力装置外,每一节车厢都配有动力推动装置。集群存储大多都是由一个个节点(X86 服务器)组成,每一个节点添加进去后,不仅能够添加容量,还能够添加整个存储器的整体处理能力。

鱼缸启示

其实我认为Scale-out和Scale-up的概念可以用一个简单的例子来解释。

不知您有没有养过鱼? 当你只有六七条鱼的时候,一个小型鱼缸就够了;可是过一段时间新生了三十多条小鱼,这个小缸显然不够大了。

如果用Scale-up解决方案,那么你就需要去买一个大缸,把所有沙啊、水草啊、布景啊、加热棒、温度计都从小缸里拿出来,重新布置到大缸。这个工程可不简单哦,不是十分钟八分钟能搞得定的,尤其水草,纠在一起很难分开(不过这跟迁移数据的工程复杂度比起来实在是毛毛雨啦,不值一提)。

那么现在换个思路,用Scale-out方案,就相当于是你在这个小缸旁边接了一个同样的小缸,两个缸联通。鱼可以自动分散到两个缸,你也就省掉了上面提到的那一系列挪沙、水草、布景等的折腾了。

回到存储架构。用户在采购之初很难准确预测未来数据增长的速度和总量。用户往往不得不采购比自己目前实际需求容量更大的存储,这就导致两个问题,一是预算的浪费,很多存储空间都是为未来数据增长采购的,花了10TB的钱,但是可能只利用上了5TB,另5TB的资金都白白放在那里。另一个问题是,随着时间推移,数据增长,数据量超过了10TB。

按照过去Scale-up的理念,解决方案就是购买更大容量的存储,那么难免面临数据迁移的问题,用户必须停机迁移数据,意味着服务的中断。而Scale-out架构解决了这个矛盾。用户按需采购存储,一旦容量不够了,再购置一台接到原有存储上就可以了。

举个例子

常见的存储设备扩展案例,下图展示了scale-out存储方案的架构。在图中,系统只能通过增加具有完整功能的节点进行扩展,但一个scale-out系统可以有很多节点,而且节点之间的内部物理互联距离也可以很远。

Scale-up,即纵向扩展架构。从下面的拓扑图我们可见,纵向扩展是利用现有的存储系统,通过不断增加存储容量来满足数据增长的需求。

Scale-upscale-out并非不能融合在一起,很多存储系统就可以同时实现纵向扩展和横向扩展,下面的示意图就展示了这种方案。

究竟选择scale-up还是scale-out架构,主要考虑以下因素:

成本 Scale-up架构只有容量升级的成本,不会增加控制器或基础设施的开销。如果我们主要衡量每GB存储的单位价格,scale-up的扩展方式无疑更便宜一些
容量 两种解决方案都可以满足容量需求,但scale-up架构也许会有些限制,主要取决于单个系统最大支持多少个磁盘数量和多大的容量
性能 Scale-out架构在性能上具有扩展潜力,在多个存储控制器下,IOPS处理能力和吞吐带宽都可以聚合。虽然节点之间的通信会引发延迟,但那是部署时的细节问题
管理 Scale-up架构本身就是以单一系统的方式来进行管理的。而Scale-out架构通常有聚合管理的能力,但每个厂商提供的产品可能会有所不同
复杂性 Scale-up架构的存储相对简单,而scale-out架构的系统会更复杂一些,毕竟每个节点都需要管理
可用性 多个节点可以提供更好的可用性,假使有一个部件故障或失效,系统也不至于整体宕机。这一点与具体的实施方案也有关系

在选择scale-up还是scale-out的时候,我们要考虑大量的因素。而结果往往取决于哪个厂商有比其他人更好的整体方案、实施能力和技术优势。但我们最好从了解最基本的信息起步,了解这两种技术及其之间的差别。

什么是横向扩展和纵向扩展?相关推荐

  1. 什么是横向扩展、纵向扩展?

    什么是横向扩展.纵向扩展? 横向扩展英文简称:Scale Out,全称:Scale horizontally,横向扩展,向外扩展. 纵向扩展英文简称:Scale Up,全称:Scale vertica ...

  2. 【架构实践】微服务架构全解析:Scale Cube 横向扩展,垂直扩展,纵向扩展

    目录 微服务架构全解析:Scale Cube 横向扩展,垂直扩展,纵向扩展 前言

  3. GB28181系统设计(四)-横向扩展和纵向扩展

    横向扩展 横向扩展是增加更多的服务器来实现的,那么如何自动发现服务器呢?需要中心节点吗?当然这和设计有关,和具体应用有关, 提高计算能力,显然需要把任务分解到不同的服务器上,并行完成,客户端有可能连上 ...

  4. 【转】横向扩展与纵向扩展

    谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语. 鱼缸的启示:Scale-out和Scale-up架构 其实我认为Scale-out和Scale-up ...

  5. mysql横向扩展_转mysql横向扩展和纵向扩展

    Scale - up (纵向扩展)和 Scale -out (横向扩展)的解释 谈到系统的可伸缩性, Scale - up (纵向扩展)和 Scale -out (横向扩展)是两个常见的术语,对于初学 ...

  6. 横向扩展与纵向扩展区别详解

    你有一台API服务器,每天几百万次请求,吃不消了.现在要提升性能: 1 横向扩展:多增加几台API服务器,一起服务. 纵向扩展:把API服务器换成性能更好的机器. 横向扩展 也叫 水平扩展,用更多的节 ...

  7. 数据库横向扩展和纵向扩展

    传统master-slaves模式中master性能会成为瓶颈,使用将数据库的"分片"概念来解决 水平拆分|横向扩展 水平的拆分的方案,即不修改数据库表结构,通过对表中数据的拆分而 ...

  8. 什么是横向扩展、纵向扩展

    你有一台API服务器,每天几百万次请求,吃不消了.现在要提升性能: 横向扩展:多增加几台API服务器,一起服务. 纵向扩展:把API服务器换成性能更好的机器. 横向扩展 也叫 水平扩展,用更多的节点支 ...

  9. 数据中心基础设施是应该纵向扩展还是横向扩展?

    导读:如今数据量越来越大,数据中心需求也会越来越高,当数据中心需要扩容时,那么问题来了,我们需要可伸缩的数据中心资源,那数据中心应该是纵向扩展好?还是横向扩展好呢?如何兼顾成本,效率,性能等多方因素呢 ...

最新文章

  1. String创建方式及其区别(快速了解)
  2. 《价值50亿的10句话》读后感(学生作业分享)
  3. 深入理解计算机操作系统:链接笔记
  4. python自动点击网页按钮_Python+Selenium使用(二)- 自动点击下一页
  5. (转)Arcgis for JS之地图自适应调整
  6. 中国未来5年IP地址需求总量高达345亿
  7. C/C++访问PostgreSQL数据库
  8. 代码织入 android,这可能是Android最傻瓜式的AOP框架
  9. drf 配置文件 过滤类 全局异常 接口文档
  10. 20162327WJH2016-2017-2《程序设计与数据结构》课程总结
  11. 纺织品外贸ERP管理,“双循环”下的发展新格局
  12. Python AQI空气污染指数数据分析与机器学习
  13. 安全策略手记 (安全沙箱全攻略)
  14. sql数据库教程百度云_【推荐】零基础水彩画入门教程|零基础水彩教程百度云...
  15. 解决调用组件,组件内容不加载的问题
  16. CNC数控机械加工零件的步骤
  17. fk算法绘制层状介质理论地震图
  18. xtuoj 模拟 1176 First Blood
  19. 工具条研究手记(2) - 认识CToolBar工具条类
  20. 2014 计算机一级 试题,2014年全国计算机一级考试选择题试题与详细答案

热门文章

  1. Freertos基本概念----(猫和老鼠)
  2. dd 命令用来测试硬盘读写速度
  3. Linux系统的grub.cfg文件损坏修复
  4. 2019年安徽省大学生计算机博弈大赛,2019年辽宁省普通高等学校本科大学生计算机博弈竞赛在我校成功举行...
  5. vs用html制作表格,演练:在 Visual Web Developer 中编辑 HTML 表格
  6. c语言大作业俄罗斯方块,C语言自己写俄罗斯方块(完整版)
  7. 如何让计算机显示器满屏,电脑显示器满屏条纹的解决方法
  8. 大陆中文网站流量排名前100
  9. WPF免费绘图库推荐
  10. latex各种图表制作