自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

垂直擴(kuò)展&水平擴(kuò)展,如何選擇?

系統(tǒng)
本文分析了垂直擴(kuò)展和水平擴(kuò)展以及他們的優(yōu)缺點(diǎn)和使用場景,垂直擴(kuò)展更加關(guān)注的是機(jī)器硬件配置的提升,而水平擴(kuò)展關(guān)注更多的是機(jī)器數(shù)量,在系統(tǒng)設(shè)計(jì)中,這是最常見的 2種擴(kuò)展方式。

在系統(tǒng)設(shè)計(jì)時,我們需要預(yù)估系統(tǒng)的容量,但是,隨著系統(tǒng)流量的增大,我們會通過擴(kuò)容來應(yīng)對流量,常見的擴(kuò)容方式是垂直擴(kuò)展和水平擴(kuò)展,因此,這本文章,我們將深入探討這兩種擴(kuò)展策略的優(yōu)缺點(diǎn)以及該如何選擇?

一、垂直擴(kuò)展

1.定義

垂直擴(kuò)展(Vertical Scaling),也稱為縱向擴(kuò)展或向上擴(kuò)展(Scale Up),是指通過增加單個服務(wù)器的資源來提高系統(tǒng)性能和處理能力。具體來說,垂直擴(kuò)展涉及到增加服務(wù)器的 CPU、內(nèi)存、存儲等硬件資源,使其能夠處理更多的負(fù)載和更高的工作量。

如下圖,展示了 CPU、內(nèi)存、存儲的擴(kuò)展:

  • 升級 CPU:將服務(wù)器的處理器更換為功能更強(qiáng)大的處理器。
  • 增加 RAM:添加更多內(nèi)存以處理更大的數(shù)據(jù)集并減少對較慢存儲的依賴。
  • 增強(qiáng)存儲:切換到更快的存儲(如 SSD)或增加整體存儲容量。

比如:CPU: 4核 內(nèi)存: 16GB 存儲: 500GB 升級成 CPU: 16核 內(nèi)存: 64GB 存儲: 2TB

2.優(yōu)點(diǎn)

垂直擴(kuò)展的優(yōu)點(diǎn)主要包含以下幾點(diǎn):

  • 簡單:垂直擴(kuò)展的實(shí)現(xiàn)相對簡單,因?yàn)樗恍枰膽?yīng)用程序體系結(jié)構(gòu)。
  • 更低的延遲:由于所有資源都位于一臺機(jī)器上,因此垂直擴(kuò)展可以消除對服務(wù)器間通信的需求,從而降低延遲。
  • 降低軟件成本:在初始階段,垂直擴(kuò)展可能比水平擴(kuò)展更具成本效益,尤其是在處理需求適度增長時。
  • 無需重大代碼更改:通常幾乎不需要對應(yīng)用程序的代碼庫進(jìn)行調(diào)整。

3.缺點(diǎn)

垂直擴(kuò)展的缺點(diǎn)主要包含以下幾點(diǎn):

  • 硬件限制:單臺服務(wù)器的硬件資源有上限,最終會達(dá)到物理擴(kuò)展的極限。
  • 單點(diǎn)故障:由于所有資源都在一臺服務(wù)器上,任何硬件故障都可能使整個系統(tǒng)癱瘓。
  • 停機(jī)時間:升級硬件通常需要使服務(wù)器脫機(jī),這可能是一個明顯的缺點(diǎn)。
  • 成本增加:隨著規(guī)模的擴(kuò)展,具有強(qiáng)大 CPU和大量 RAM的高端服務(wù)器可能會變得非常昂貴。

二、水平擴(kuò)展

1.定義

水平擴(kuò)展(Horizontal Scaling),也稱為橫向擴(kuò)展或向外擴(kuò)展(Scale Out),是指通過增加更多的服務(wù)器或節(jié)點(diǎn)來提高系統(tǒng)性能和處理能力,而不是通過增加單個服務(wù)器的硬件資源來提升性能。水平擴(kuò)展通常用于分布式系統(tǒng)和云計(jì)算環(huán)境中,通過增加服務(wù)器數(shù)量來分散負(fù)載,從而提高系統(tǒng)的整體處理能力和可靠性。

如下圖,展示了水平擴(kuò)展:

2.優(yōu)點(diǎn)

水平擴(kuò)展的優(yōu)點(diǎn)主要包含以下幾點(diǎn):

  • 近乎無限的可擴(kuò)展性:只要您的架構(gòu)支持,您就可以繼續(xù)添加節(jié)點(diǎn),從而能夠處理更大的負(fù)載。
  • 改進(jìn)的容錯能力:一個節(jié)點(diǎn)的故障不會導(dǎo)致整個系統(tǒng)癱瘓,從而最大限度地減少停機(jī)時間。
  • 成本效益:水平擴(kuò)展可能更具成本效益,因?yàn)樗褂蒙逃糜布皇前嘿F的高端服務(wù)器。

3.缺點(diǎn)

水平擴(kuò)展的缺點(diǎn)主要包含以下幾點(diǎn):

  • 復(fù)雜性:將應(yīng)用程序分布在多個服務(wù)器上會帶來數(shù)據(jù)一致性、負(fù)載平衡和服務(wù)器間通信方面的復(fù)雜性。
  • 延遲增加:與單臺計(jì)算機(jī)相比,服務(wù)器之間的通信可能會引入額外的延遲。
  • 成本:由于基礎(chǔ)設(shè)施的復(fù)雜性,初始設(shè)置和維護(hù)成本可能會更高。
  • 應(yīng)用程序兼容性:應(yīng)用程序的代碼可能需要調(diào)整才能在分布式環(huán)境中有效工作。

三、如何選擇?

1.考慮因素

在垂直擴(kuò)展和水平擴(kuò)展之間做出選擇時,我們通常需要考慮以下事項(xiàng):

  • 成本:分析初始硬件成本與長期運(yùn)營費(fèi)用。
  • 工作負(fù)載:分析應(yīng)用程序是受 CPU限制、內(nèi)存受限,還是其他因素限制?
  • 復(fù)雜性:在進(jìn)行擴(kuò)展時,需要考慮擴(kuò)展的復(fù)雜度,是否牽涉到應(yīng)用程序代碼的改動等?
  • 未來增長:擴(kuò)展預(yù)計(jì)會達(dá)到多大的規(guī)模?

2.何時選擇垂直擴(kuò)展

一般來說,垂直擴(kuò)展非常適合以下方案:

  • 有限的可擴(kuò)展性:增長預(yù)測有限的中小型應(yīng)用程序,您的需求可以通過硬件升級輕松滿足。
  • 遺留應(yīng)用程序:當(dāng)組件之間存在緊密耦合時,很難在多個服務(wù)器之間分發(fā)。
  • 低延遲:當(dāng)?shù)脱舆t是一項(xiàng)關(guān)鍵要求,并且服務(wù)器間通信開銷是不可接受的。
  • 成本敏感型項(xiàng)目:當(dāng)預(yù)算不允許復(fù)雜的基礎(chǔ)設(shè)施,并且橫向擴(kuò)展的成本超過收益時,例如在昂貴的軟件許可證的情況下。

3.何時選擇水平擴(kuò)展

一般來說,水平擴(kuò)展非常適合以下情況:

  • 快速增長:當(dāng)經(jīng)歷快速增長并需要處理不斷增長的流量的能力時。
  • 高可用性需求:當(dāng)應(yīng)用程序需要高可用性和節(jié)點(diǎn)故障復(fù)原能力時。
  • 易于分發(fā):當(dāng)應(yīng)用程序可以輕松地分布在多個服務(wù)器上而無需進(jìn)行重大修改時。
  • 微服務(wù)體系結(jié)構(gòu):當(dāng)應(yīng)用程序圍繞微服務(wù)進(jìn)行設(shè)計(jì)時,微服務(wù)自然適合水平擴(kuò)展。
  • 成本效益:當(dāng)成本效益是優(yōu)先事項(xiàng)時,首選使用商品硬件。

四、總結(jié)

本文分析了垂直擴(kuò)展和水平擴(kuò)展以及他們的優(yōu)缺點(diǎn)和使用場景,垂直擴(kuò)展更加關(guān)注的是機(jī)器硬件配置的提升,而水平擴(kuò)展關(guān)注更多的是機(jī)器數(shù)量,在系統(tǒng)設(shè)計(jì)中,這是最常見的 2種擴(kuò)展方式。

垂直擴(kuò)展和水平擴(kuò)展,如何選擇?在很大程度上取決于應(yīng)用程序的特定需求、預(yù)期的增長規(guī)模、預(yù)算以及正常運(yùn)行時間對業(yè)務(wù)的重要性,不過,在實(shí)際情況下,通常都會使用兩者的組合來優(yōu)化系統(tǒng)性能和成本效益。

通過本文,我們需要掌握在系統(tǒng)流量增加時,如何通過擴(kuò)展來應(yīng)對流量,同時也需要掌握在系統(tǒng)流量不高時,如何動態(tài)縮減以減少成本。

責(zé)任編輯:趙寧寧 來源: 猿java
相關(guān)推薦

2018-01-12 15:17:40

數(shù)據(jù)庫水平分庫數(shù)據(jù)遷移

2015-03-23 16:32:20

2017-11-09 13:56:46

數(shù)據(jù)庫MongoDB水平擴(kuò)展

2022-10-08 14:44:01

VSCode開源

2022-07-01 17:57:45

KubernetesAPI

2020-11-18 09:39:02

MySQL數(shù)據(jù)庫SQL

2023-01-06 08:06:52

Groovy類型擴(kuò)展

2011-12-26 10:49:27

JavaJUnitRunner

2009-08-27 18:04:01

c#擴(kuò)展方法string

2017-09-15 08:22:17

磁盤備份設(shè)備

2016-07-06 11:13:02

云計(jì)算

2023-01-05 08:09:27

GroovyDSL?

2023-09-07 13:01:24

Java計(jì)算

2024-08-07 08:14:26

2009-03-16 09:16:13

行為擴(kuò)展WCF.NET

2009-08-31 14:45:10

C#擴(kuò)展方法

2010-06-30 17:15:39

向外擴(kuò)展SQL Ser

2020-07-30 17:59:34

分庫分表SQL數(shù)據(jù)庫

2015-06-05 09:50:53

LTE

2021-05-06 09:33:32

OperatorKubernetes開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號