什么是Scale Up(纵向扩展)和Scale Out(横向扩展)?

简介: 什么是Scale Up(纵向扩展)和Scale Out(横向扩展)?

1 Scale Out

即Scale horizontally,横向扩展,向外扩展 。

称为集群系统。指由多个节点组成的系统,这种系统的扩展主要以水平扩展方式(指增加节点的方式)来进行。

Scale-out 通过将多个低性能的机器组成一个分布式集群来共同抵御高并发流量的冲击。

比如向原有的web、邮件系统添加一个新机器。

2 Scale Up

即Scale vertically)纵向扩展,向上扩展。

称为单节点系统,指系统中只包括一个有效节点(如果需要HA时,可以将两个单节点以System Replication形式构成单节点的HA架构)。这种架构的系统只具有垂直扩展能力,当需要扩展系统时,通过在节点上增加更多的CPU、内存和硬盘来扩大系统的能力。


Scale-up通过购买性能更好的硬件提升系统的并发处理能力,

比如:我们向原有的机器增加CPU、内存数。

3 抉择

无论是Scale Out,Scale Up,Scale In,实际上就是一种架构的概念,这些概念用在存储上可以,用在数据库上,网络上一样可以。

何时选择Scale-up或Scale-out呢?

一般系统设计初期会考虑使用Scale-up,因为足够简单,堆砌硬件解决即可,但当系统并发超过单机的极限时,就要使用Scale-out了。


Scale-out虽能突破单机限制,但也会引入一些复杂问题。比如,


若某节点故障,如何保证 HA?

当多个节点有状态需要同步时如何保证状态信息在不同节点的一致性?

如何做到使用方无感知的增加和删除节点?

这些问题的存在与解决也伴随着分布式系统不断完善发展。

image.png

参考

目录
相关文章
|
iOS开发
SwiftUI极简教程34:LazyVGrid垂直网格和LazyHGrid水平网格的使用
SwiftUI极简教程34:LazyVGrid垂直网格和LazyHGrid水平网格的使用
1795 0
SwiftUI极简教程34:LazyVGrid垂直网格和LazyHGrid水平网格的使用
|
3月前
|
编解码 数据可视化
基于transform的scale属性,实现数据可视化大屏自适应缩放,保持比例不变,轻松应对不同分辨率
基于transform的scale属性,实现数据可视化大屏自适应缩放,保持比例不变,轻松应对不同分辨率
226 0
|
Python
滑块组件叫做Scale
在tkinter中,滑块组件叫做Scale,它是一种用于创建滑动条的控件。以下是使用tkinter中滑块组件的基本方法: 1. 创建滑块组件:使用tkinter.Scale函数创建一个滑块组件,需要传入两个参数:父窗口和滑块的配置选项。
123 7
|
前端开发 JavaScript 容器
overflow和动态计算高度
overflow和动态计算高度
85 0
|
前端开发 容器
css实现容器垂直水平居中的七中方法
css实现容器垂直水平居中的七中方法
67 0
|
前端开发
弹性盒中的缩放机制是怎样的?
弹性盒中的缩放机制是怎样的?
|
前端开发
css:writing-mode控制文字水平排布或垂直排布
css:writing-mode控制文字水平排布或垂直排布
119 0
css:writing-mode控制文字水平排布或垂直排布
BXA
|
消息中间件 弹性计算 Kubernetes
扩展你的Kubernetes集群:理解水平扩展与垂直扩展
Kubernetes是一个用于管理容器化应用程序的开源平台。它提供了自动化部署、扩展和操作应用程序所需的资源,并对容器的运行状态进行监控和修复。Kubernetes 能够节省大量时间和精力,让开发人员能够专注于应用程序的开发和部署。
BXA
513 0
|
SQL 数据挖掘 关系型数据库
横向扩展 | 学习笔记
快速学习横向扩展
横向扩展 | 学习笔记
16、实现水平垂直的三种方法(flex、grid、transform)
16、实现水平垂直的三种方法(flex、grid、transform)
143 0
16、实现水平垂直的三种方法(flex、grid、transform)