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

  谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语。

  

  鱼缸的启示:Scale-out和Scale-up架构

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

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

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

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

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

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

=========================================================

你有一台API服务器,每天几百万次请求,吃不消了。现在要提升性能:

横向扩展:多增加几台API服务器,一起服务。
纵向扩展:把API服务器换成性能更好的机器。

原文地址:https://www.cnblogs.com/apeway/p/10869685.html

时间: 2024-10-26 11:53:12

【转】横向扩展与纵向扩展的相关文章

横向拆分(扩展) 纵向拆分(扩展)

Scale Out(也就是Scale horizontally)横向扩展,向外扩展Scale Up(也就是Scale vertically)纵向扩展,向上扩展无论是Scale Out,Scale Up,Scale In,实际上就是一种架构的概念,这些概念用在存储上可以,用在数据库上,网络上一样可以.简单比喻下Scale out和Scale up,帮助我们理解:Scale Out,比如:我们向原有的web.邮件系统添加一个新机器.Scale UP,比如:我们向原有的机器添加CPU.内存.

MariaDB Spider蜘蛛侠轻松解决表的横纵向扩展

什么是Spider? 当您的数据库不断增长时,您绝对需要考虑其他技术,如数据库分片.Spider是MariaDB内置的一个可插拔用于MariaDB/MySQL数据库分片的存储引擎,充当应用服务器和远程后端DB之间的代理(中间件),它可以轻松实现MySQL的横向和纵向扩展,突破单台MySQL的限制,支持范围分区.列表分区.哈希分区,支持XA分布式事务,支持跨库join.通过Spider,您可以跨多个数据库后端有效访问数据,让您的应用程序一行代码不改,即可轻松实现分库分表! 分库分表架构图: 应用程

系统之纵向扩展

硬件永远比开发者和有效率的代码便宜.可能的话,缓存一切所有数据库都建立在SSD之上,这样可以获得0延时.尽可能最小化建立,程序可以工作才是重点.基于木桶效应,速度肯定受限于某个短板,现有的云服务基本上都存在容量和性能限制.达到同样的性能,使用云的成本将远远高于自建数据中心.什么好用用什么,不要做无必要的系统之争.高效的代码意味着更少的主机.只有新项目上线时才会因为特殊需求增加硬件,通常情况下是添加内存,但在此之外,高效的代码就意味着0硬件添加.所以经常只讨论两个问题:为存储增加新的SSD:为新项

业务横向拆分和纵向拆分

大规模系统架构的设计一般原则就是尽可能地拆分,以达到更好的独立扩展与伸缩.更灵活的部署.更好的隔离和容错.更好的开发效率.具体的拆分策略大体上可以分为横向拆分和纵向拆分. 总结:纵向拆分主要从业务角度进行,根据业务分割为不同的子系统:而横向拆分侧重于原业务深入拆分,然后服务重组. ps:关于拆分在数据库.技术层面又有不同的定义.

横向集成、纵向贯通 ——地产财务管理新思路

初衷启示 古时有一大户人家, 前有大院,后有花园,主人家姓李,人称李老爷. 李老爷手下有两个掌柜的,张大头和刘墩子.张大头为人精明能干,很有想法:刘墩子憨厚老实,做事认真.李老爷想考察下他们. 一天,李老爷出远门,临走时,分别给了张大头和刘墩子500两银子,让他们看好. 两年后,李老爷回来了.刘墩子给了李老爷擦的锃亮的500两银子:张大头却给了李老爷700两银子.原来,李老爷走后,刘墩子时不时的查看银子的情况,进行清点,把银子擦的锃亮,并妥善保管,不容有半点闪失:张大头则把这些银子拿到自己负责的

数据库的水平扩展与垂直扩展

数据库水平扩展与垂直扩展 在互联网应用中,数据库经常是我们存储和访问数据的常用介质.随着负载的增大,对数据库读写性能的要求往往成为很大的挑战.在这种情况下我们可以考虑数据库相关的replication机制提高读写的性能.由于一般采用一写多读的replication机制(写master同步到多个slaves),导致这样的机制往往会有缺陷.首先它依赖于读写的比例,如果写的操作过多,导致master往往成为性能的瓶颈所在,从而使得slaves的数据同步延迟也变大,进而大大消耗CPU的资源,并且导致数据

在spatial扩展和3D扩展都带这一工具

ArcGIS水分分析工具的流向分析是基于D8单流向算法,如果分析使用的DEM存在凹陷点,就会产生汇,导致径流断流从而影响了分析结果.在前面章节<ArcGIS水文分析实战教程(2)ArcGIS水文分析工具的基本原理>中又介绍过D8算法,而<ArcGIS水文分析实战教程(4)地形预处理>章节中笔者也较少过如何创建无凹陷点得DEM数据,在使用流向分析工具之前可以先行阅读. 首先流向分析要使用填洼过的数据,确保DEM数据没有凹陷点.如果数据准备妥当,直接使用水文分析工具箱中的[流向]工具进

使类的扩展更简单——扩展方法

1.什么是扩展方法? 扩展方法,首先是一种方法,它可以用来扩展已定义类型中的方法成员. 在扩展方法诞生之前,如果想为一个已有类型自定义含有特殊逻辑的新方法时,你必须重新定义一个类型来继承已有类型,以这种方式来添加方法.如果基类有抽象方法,则还要重新去实现这个抽象方法. 这样,为了扩展一个方法,需要承担更多的因继承而产生的开销.使用继承来扩展现有类型总有点大材小用的感觉,并且值类型或密封类(不能被继承的类)等也不能被继承,不能由此获得扩展. 于是,C#3.0提出了扩展方法. 2.扩展方法的使用 2

linux下安装 gd扩展和 ftp扩展

ftp拓展 1.进入PHP安装源码包,找到ext下的ftp,进入 cd /usr/local/mysql/support-files/php-7.0.12/ext/ftp 2./usr/local/php/bin/phpize 3../configure --with-php-config=/usr/local/php/bin/php-config --enable-ftp 4.make && make install 5.vim /etc/php.ini  添加 : extension=