在设计数据密集型应用程序中,
如果您所需要的只是扩展到更高的负载,那么最简单的方法就是购买一台功能更强大的机器(有时称为垂直扩展或扩展)。在一个操作系统下,可以将多个CPU、多个RAM芯片和多个磁盘连接在一起,快速互连允许任何CPU访问内存或磁盘的任何部分。在这种共享内存体系结构中,所有的组件都可以看作是一台单机1。共享内存方法的问题是成本比线性增长更快:一台拥有两倍多CPU、两倍RAM和两倍磁盘容量的机器通常比另一台机器的成本高出两倍。由于瓶颈,两倍大小的机器不一定能处理两倍的负载。共享内存体系结构可能提供有限的容错能力--高端计算机具有可热交换的组件(您可以在不关闭机器的情况下替换磁盘、内存模块,甚至CPU),-but绝对只限于一个地理位置。另一种方法是共享磁盘体系结构,它使用多台具有独立CPU和RAM的机器,但将数据存储在通过快速网络连接的计算机之间共享的磁盘阵列上。这个体系结构用于一些数据仓库工作负载,但是争用和锁定开销限制了共享磁盘方法2的可伸缩性。相比之下,没有共享的体系结构3.获得了很大的普及。在这种方法中,运行数据库软件的每台机器或虚拟机都称为节点。每个节点独立地使用其CPU、RAM和磁盘。节点之间的任何协调都是在软件级别进行的,使用的是传统的网络。
共享磁盘体系结构是扩展还是扩展,还是两者兼而有之?
该体系结构使用多台机器,因为“有几台具有独立CPU和RAM的机器,但是将数据存储在机器之间共享的磁盘阵列上”。
但我不确定体系结构是否正在扩展,因为机器共享磁盘,书中没有提到扩展,直到没有共享任何体系结构。
谢谢。
发布于 2019-11-25 14:29:11
共享磁盘是垂直缩放磁盘的方法。正如罗伯特·哈维( Robert )所指出的,您是在水平缩放内存和CPU,但是磁盘是一个(或几个)组件。
有一种简单的方法可以确定某物是水平的还是垂直的。如果您想要添加更多的容量,您是添加了更多的组件(内存、磁盘、CPU)还是需要增加组件的容量(或者替换它)。
发布于 2019-11-25 14:25:04
看看您引用的定义,我个人的解释是,共享磁盘体系结构仍然是垂直扩展的体系结构。诚然,CPU和内存可以无限期地水平缩放,但瓶颈仍然存在于磁盘存储中。而磁盘存储不能在本地水平缩放,只能垂直缩放。因此,迟早,您会遇到磁盘吞吐量垂直扩展的限制。
发布于 2019-11-26 06:15:58
此时,最好不要再把磁盘看作是服务器的一部分,而是把磁盘看作是“网络附加存储”(或NAS)服务的一种单独的专门形式。
在简单的情况下,NAS向单个远程计算机提供块接口(例如使用iSCSI),作为磁盘单独使用。然而,本文引用了一个额外的步骤,为多个服务器提供相同的块接口。
通过向NAS中添加更多磁盘以增加容量,或者通过增加多个冗余副本来提高读取吞吐量,可以垂直地扩展此服务。(例如RAID)
乍一看,该服务还可以通过多个NAS控制器之间的镜像进行横向缩放。但是,在多个服务器上保持多个数据副本并发的复杂性,以及对文件集的严格要求意味着,在实践中,镜像用于冗余和只读性能,提高了容错和可用性特性,但没有整体吞吐量(并且没有额外的扩展)。
https://softwareengineering.stackexchange.com/questions/401601
复制相似问题