PostgreSQL的幾種分散式架構對比
來源:資料庫架構之美
PostgreSQL由於強大的功能和良好的擴充套件性,基於PostgreSQL來做的分散式架構也比較多,大部分用於分析類場景,下面比較幾種常見的架構特點。
Citus
Citus以外掛的方式擴充套件到PostgreSQL中,獨立於PostgreSQL核心,所以能很快的跟上PostgreSQL主版本的更新,部署也比較簡單,是現在非常流行的分散式方案。 Citus在蘇寧有大規模應用,微軟也提供citus的商業支援。 下面是citus的架構:
Citus節點主要分為協調節點和工作節點,協調節點不儲存真實資料,只儲存資料分佈的元資訊,實際的資料被分成若干分片,打散到不同worker節點中,應用連線協調節點,協調節點進行sql解析,生成分散式執行計劃,下發到worker節點執行,cn將結果彙總返回客戶端。
Citus的主要架構特點如下:
①有兩種表型別: 參考表和分佈表,參考表每個協調節點和worker節點都有一份完整的副本,分佈表則會打散分佈到不同worker中。
②可以進行讀寫分離,如上圖cn1為寫節點,可以透過再增加多個cn讀節點增加叢集讀的能力,寫cn和讀cn之間使用流複製進行後設資料同步。
③支援MX模式,可以將後設資料也存在某些worker節點中,這樣使得該worker節點能夠直接提供寫的能力,以此增加叢集寫的能力。
④底層worker節點可以透過流複製搭建副本,保證資料高可用。
⑤做join時最好的結果是能夠將計算下推到worker節點,但是隻有在參考表和其他表做join以及兩個表的分佈方式相同的情況下才能下推到worker計算,否則需要將資料拉到協調節點進行計算。
⑥整體架構類似mycat的中介軟體,因為沒有全域性事務管理,故不能保證資料的實時讀一致性,但是效能上相比要好。 資料寫一致性使用2pc來保證。
pgxc && pgxl
Pgxc是經典的分散式資料庫架構,是真正的企業級HTAP,我們看到市面上很多分散式資料庫產品都是基於pgxc架構擴充套件而來。 pgxc是和pg核心緊耦合的,是嵌入到pg核心中,最初pgxc的核心開發者將pgxc商業化,建立了stormdb,進行了一些並行運算元最佳化,後來TransLattice公司將stormdb收購,並且將專案開源,就是現在的pgxl,所以pgxc和pgxl是一脈相承的,大部分程式碼是直接移植過來的。 下面是pgxc的架構:
其實這個架構和citus優點類似,也是分為協調節點和資料節點,資料也是透過hash分佈到不同資料節點上,只是在叢集中增添了全域性事務管理元件,保證全域性事務的一致性。
pgxc的架構特點如下:
①gtm保證全域性讀一致性,兩階段提交保證全域性寫一致性。
②gtm是整個系統的瓶頸點,在超過150併發的情況下,gtm的瓶頸就會顯現,每一個事務開啟都會去gtm取事務號和快照資訊,造成gtm在網路壓力和分配事務號速度上存在瓶頸。
③多個協調節點間需要同步後設資料資訊,如果協調節點失敗,不僅會造成ddl hang住,也可能造成兩階段事務的阻塞。
④pgxc的出現主要是在pg在oltp應用場景上的最佳化,不管是新增gtm,還是資料一致性的保證上面都做得更加精細化。
⑤和citus類似,資料表也可以分為分佈表和複製表,複製表在每一個資料節點都有一份全量資料。
Greenplum
Greenplum是pivotal公司推出的一款開源olap的mpp資料庫,greenplum的使用者在某種程度上甚至超越了pg,很多人可能是透過greenplum才認識的pg,可見greenplum的風靡。 下面是greenplum架構:
Master節點儲存全域性系統後設資料資訊,不儲存真實資料。 資料透過hash分佈到不同的segment中,master作為sql的全域性入口,負責在segment中分配工作負載,整合處理結果,返回客戶端。
Greenplum架構特點如下:
①master節點可以做主備,segment節點也有映象保證高可用,segment主備儘量混布到不同伺服器上。
②支援行列混合儲存引擎,同時支援外部表。
③在join時也涉及到資料跨節點重分佈的問題,這也是share nothing資料庫不可避免的問題。
④高速內部interconnect網路,實現資料join時的高速移動和彙總。
⑤高效的資料並行載入。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2675143/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式 PostgreSQL - Citus 架構及概念分散式SQL架構
- 分散式 PostgreSQL - Citus 架構及概念分散式SQL架構
- 一文看懂 PostgreSQL 分散式架構SQL分散式架構
- 幾款分散式資料庫的對比分散式資料庫
- 強一致性的分散式事務幾種模式對比分散式模式
- 常見開源分散式檔案系統架構對比分散式架構
- 億級流量架構之分散式事務解決方案對比架構分散式
- 分散式架構的概述分散式架構
- 分散式WebSocket架構分散式Web架構
- jeesz分散式架構-分散式高可用分散式架構
- 幾種分散式呼叫鏈監控元件的實踐與比較(二)比較分散式元件
- 在微服務架構中實施分散式事務鎖的幾個方案比較 - Prasanth Gullapalli微服務架構分散式
- 架構選型必讀:集中式與分散式全方位優劣對比架構分散式
- 分散式鎖的幾種實現方式分散式
- 分散式鎖的幾種實現方式~分散式
- 分散式鎖的幾種實現思路分散式
- ClickHouse 分散式架構(qbit)分散式架構
- 認識分散式架構分散式架構
- 分散式系統的架構思路分散式架構
- 分散式機器學習中的模型架構分散式機器學習模型架構
- 基於 dubbo 的分散式架構分散式架構
- 搞懂分散式技術16:淺談分散式鎖的幾種方案分散式
- 分散式事務的幾種實現方式分散式
- Redis實現分散式鎖的幾種方案Redis分散式
- 分散式註冊中心對比分散式
- KAFKA介紹(分散式架構)Kafka分散式架構
- MongoDB中的分散式叢集架構MongoDB分散式架構
- 圖解分散式架構的演進圖解分散式架構
- 對CQRS架構的幾點疑問架構
- 分散式中幾種服務註冊與發現元件的原理與比較分散式元件
- 幾種分散式呼叫鏈監控元件的實踐與比較(一)實踐分散式元件
- J2EE分散式架構 dubbo+springmvc+mybatis+ehcache+redis分散式架構分散式架構SpringMVCMyBatisRedis
- CSS“隱藏”元素的幾種方法的對比CSS
- 常用的幾種大資料架構剖析大資料架構
- 幾種常見的微服務架構方案微服務架構
- PostgreSQL 架構SQL架構
- 分散式唯一ID的幾種生成方案分散式
- MySQL高可用架構對比MySql架構