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