MPP 與 SMP 的區(qū)別,終于有人講明白了
01SMP
SMP 是指在一個計算機上匯集了一組處理器(多核 CPU),各 CPU 之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu)。代表數(shù)據(jù)庫有 Oracle 、MySQL 。SMP 架構(gòu)原理圖如圖1所示。
▲圖1 SMP 架構(gòu)原理圖
SMP 的典型特征如下:
- 每個處理器共享操作系統(tǒng)的一個副本 。
- 支持共享架構(gòu)。
- 多任務(wù)并行架構(gòu),是一個緊耦合的多處理器系統(tǒng)。
- 多個處理器之間共享整個工作。
- 沒有單獨的緩存池或鎖表,全部共享。
- 通過購買更大的系統(tǒng)來實現(xiàn)擴展。
- 容易出現(xiàn)資源爭用等問題。
- 創(chuàng)建分布式架構(gòu)需要復(fù)雜的設(shè)計,并且只能部分實現(xiàn)。
- 軟件提供的內(nèi)存可用量完全取決于 RAM 和負(fù)載的數(shù)量。
在 SMP 中,每個 CPU 都有自己的緩存,無論雙核還是四核,其余資源都是共享的。SMP 的優(yōu)點如下。
1 )共享單一操作系統(tǒng)副本。
2 )應(yīng)用程序編程模式簡便。
3)管理成本低,易于維護管理。
SMP 的缺點如下。
1 )伸縮擴展能力非常有限。對 SMP 服務(wù)器進行擴展的方式包括增加內(nèi)存、使用更快 的 CPU、增加 CPU、擴充 I/O(槽口數(shù)與總線數(shù))以及添加更多的外部設(shè)備(通常是磁盤存 儲設(shè)備)。這樣的架構(gòu)模式直接導(dǎo)致內(nèi)存上線受限制。
2 )CPU 利用率低。由于每個 CPU 必須通過相同的內(nèi)存總線訪問相同的內(nèi)存資源,因 此隨著 CPU 數(shù)量的增加,內(nèi)存訪問沖突將迅速增加,最終造成 CPU 資源的浪費,大大降 低 CPU 性能的有效性。
3)總線有瓶頸。當(dāng)大型程序的處理要求大于共享總線時,總線就沒有能力進行處理 了,這時共享的總線就成為性能瓶頸。
4 )容錯性和效率較低。
SMP 的典型應(yīng)用場景是托管小型網(wǎng)站和電子郵件服務(wù)器等。
02分布式MPP計算架構(gòu)
MPP(Massively Parallel Processing,大規(guī)模并行分析處理)架構(gòu)模式,是典型的分布 式計算模式。MPP 的各節(jié)點不共享資源,每個執(zhí)行節(jié)點可以獨自完成數(shù)據(jù)的讀取和計算。
MPP 架構(gòu)核心原理如下。
1 )將數(shù)據(jù)集分布在許多機器或節(jié)點上,以處理大量數(shù)據(jù)。
2 )每個節(jié)點都有獨立的磁盤存儲系統(tǒng)和內(nèi)存系統(tǒng)。
3 )業(yè)務(wù)數(shù)據(jù)根據(jù)數(shù)據(jù)庫模型和應(yīng)用特點劃分到各個節(jié)點上。
4 )每個數(shù)據(jù)節(jié)點通過專用網(wǎng)絡(luò)或者商業(yè)通用網(wǎng)絡(luò)互相連接,彼此協(xié)同計算,作為整體 提供數(shù)據(jù)庫服務(wù)。
在 MPP 架構(gòu)中,各節(jié)點都包含自己的存儲和計算功能,可以獨立執(zhí)行查詢的一部分。 最后,在內(nèi)存里進行數(shù)據(jù)合并,并將結(jié)果返回客戶端。MPP 具有可伸縮、高可用、高性能、 資源共享等優(yōu)勢。
MPP 由許多松耦合的處理單元組成。注意,這里是指處理單 元而不是處理器。每個單元內(nèi)的 CPU 都有自己私有的資源,如總線、內(nèi)存、硬盤等。每個 單元內(nèi)都有操作系統(tǒng)和管理數(shù)據(jù)庫實例。這種結(jié)構(gòu)最大的特點在于不共享資源。代表數(shù)據(jù)庫 有 ClickHouse 、Snowflake 、Azure Synapse Analytics 、Impala 、Greenplum 、Elasticsearch、 Presto 。MPP 架構(gòu)原理圖如圖2所示。
圖片
▲圖2 MPP架構(gòu)原理圖
MPP 典型特征如下:
- 每個處理器都使用自己的操作系統(tǒng)和內(nèi)存。
- 支持無共享架構(gòu)。
- 多個處理器對單個任務(wù)進行協(xié)調(diào)處理。每個處理器處理任務(wù)的不同部分。
- 每個節(jié)點只負(fù)責(zé)處理自己磁盤上的任務(wù)。
- 每個節(jié)點維護自己的一組鎖表和緩存池,增加了內(nèi)存功能的可用性。
- 只需添加機架即可輕松實現(xiàn)可擴展性,支持 TB 到 PB 數(shù)據(jù)量級的水平擴展。
- 完全不共享資源,所以不存在資源爭用。
- 被設(shè)計為分布式架構(gòu)。
- 數(shù)據(jù)被水平分區(qū),壓縮率高,以最佳方式使用內(nèi)存。
- 處理器使用消息進行通信。
MPP 的優(yōu)點如下。
1 )每個處理器都使用自己的操作系統(tǒng)和內(nèi)存。
2 )性能好。大規(guī)模數(shù)據(jù)并行處理能力優(yōu)秀,適合于復(fù)雜的大型數(shù)據(jù)分析與處理場景。
3)可伸縮。在 MPP 增加節(jié)點時,MPP 的性能可以線性擴展。MPP 在數(shù)據(jù)倉庫決策支持和數(shù)據(jù)挖掘方面占據(jù)優(yōu)勢。
4 )低成本?;?MPP 的數(shù)據(jù)倉庫解決方案旨在廉價的商用硬件上運行,不需要可能 包含成本的企業(yè)級雙冗余組件。
5 )高可用。使用自動數(shù)據(jù)復(fù)制來提高系統(tǒng)彈性并確保高可用性。
6)高吞吐量。MPP 可以實現(xiàn)非常高的吞吐量,因為讀寫操作可以在集群中的獨立節(jié)點 上并行執(zhí)行。
MPP 的缺點如下。
1 )管理成本高。MPP 需要一種復(fù)雜的機制來調(diào)度和平衡各個節(jié)點的負(fù)載和并行處理過 程,通信復(fù)雜。當(dāng)通信時間長時, MPP 性能會變差。目前一些基于 MPP 技術(shù)的服務(wù)器一般 通過系統(tǒng)級軟件(如數(shù)據(jù)庫)來屏蔽這種復(fù)雜性。
2 )短板效應(yīng):如果遇到“短板”節(jié)點,整個引擎的性能將下降到該短板節(jié)點的能力(木桶的短板)。MPP 架構(gòu)不適合異構(gòu)的機器,它要求各節(jié)點配置相同。
MPP 的典型應(yīng)用場景是數(shù)據(jù)倉庫、大規(guī)模數(shù)據(jù)處理和數(shù)據(jù)挖掘等。
關(guān)于作者:陳光劍,資深大數(shù)據(jù)專家、后端技術(shù)專家和架構(gòu)師,擁有超過10年的技術(shù)研發(fā)和管理經(jīng)驗,一線實戰(zhàn)經(jīng)驗豐富。現(xiàn)就職于字節(jié)跳動,曾就職于阿里巴巴,主要從事企業(yè)智能數(shù)字化經(jīng)營管理、電商智能數(shù)字化運營等系統(tǒng)架構(gòu)設(shè)計和研發(fā)工作。