隨著網際網路業務蓬勃發展,大規模高並發交易處理、海量數據處理與分析需求不斷增長的背景下,國產金融級分布式資料庫SequoiaDB巨杉資料庫的統一存儲和管理海量結構化、非結構化數據的能力得到了廣大用戶的認可。
SequoiaDB巨杉資料庫自研的原生分布式存儲引擎支持完整ACID,具備彈性擴展、高並發和高可用特性,基於同一的原生分布式資料庫底座,提供基於內核級的DBaaS雲原生資料庫能力。提供高達8種SQL、NoSQL及對象存儲實例,包括:提供原生的SDB API進行資料庫管理及數據CURD操作;提供兼容 MySQL、MariaDB、PostgreSQL 與 SparkSQL的四種關係型資料庫實例;提供兼容基於JSON的JSON文檔類MongoDB資料庫實例;提供兼容S3對象存儲與PosixFS文件系統的非結構化數據實例。作為一個擁有全分布式系統架構的資料庫,SequoiaDB 支持各種靈活的部署方式。本文主要將以三副本為例,介紹SequoiaDB巨杉資料庫在單數據中心下部署規劃最佳實踐。SequoiaDB 作為一款高性能分布式關係型資料庫,支持 Linux 作業系統環境,支持絕大多數的主流硬體網絡,並能夠部署和運行在 x86及 ARM 架構伺服器環境和主流虛擬化環境。本文所展示的三副本部署規劃實踐中的伺服器配置,如下表所示。(關於更多SequoiaDB的硬體要求可參考文檔:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1561381803-edition_id-500#受支持的硬體平臺)(關於更多SequoiaDB的硬體要求可參考文檔:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1561381803-edition_id-500#受支持的作業系統)本文以三臺物理機伺服器的部署規劃最佳實踐進行探索,首先我們需要對物理機的磁碟進行測試和規劃,規劃時往往需要從以下幾個方面進行考慮:對於磁碟的配置是選擇用裸盤還是用RAID,各有什麼優缺點
問題一:裸盤還是RAID對於磁碟的規劃使用,我們分別進行了兩組實驗來對比裸盤和RAID的性能。1. 磁碟在raid5模式下,LOB數據的寫入性能測試。2. 磁碟在直通模式下,LOB數據的寫入性能測試。模擬場景,向資料庫寫入800w張100KB的圖片,寫入完成之後再觸發全量同步觀察寫入磁碟寫入速度。從以上測試結果可以看出,
使用6塊裸盤的寫入性能高於RAID5模式。巨杉資料庫本身以三副本模式進行部署,保證了資料庫的高可用性,因此在一般場景下我們推薦使用裸盤進行部署巨杉資料庫。那麼使用裸盤是否存在什麼弊端,什麼場景下推薦使用RAID5 呢?在使用裸盤的過程中,很多用戶慢慢發現磁碟一旦損壞在更換磁碟的時候需要人工介入進行節點啟停、磁碟掛載等一系列操作,而使用RAID5劃分磁碟就可以完美的避免這些操作,因此當應用對於讀寫性沒有很高時候,使用RAID5可以在滿足性能要求的同時減少故障發生時的人工介入工作。
問題二:數據節點數量規劃為避免多個數據節點部署在一塊盤上,在業務壓力大時候發生IO搶佔的問題,我們建議按照每塊盤上部署一個數據節點的方式來規劃,最終數據節點規劃方案如下圖。
問題三:如何規劃數據分布SequoiaDB在集群的管理上定義了數據域、分區組的概念。數據域由若干個複製組(ReplicaGroup)組成的邏輯對象。每個域都可以根據定義好的策略自動管理所屬數據,如數據切片和數據隔離等。分區組又被稱為複製組,一個複製組內可以包含一個或多個數據節點(或編目節點),節點之間的數據使用異步日誌複製機制,保持最終一致。
一個集群可以根據不同的業務系統來劃分不同的數據域,不僅實現將不同業務系統數據在物理層面的隔離存儲,同時也實現了不同業務系統數據的統一調度管理,而且以後的集群擴容也可以根據域的使用需求而只針對此域進行集群擴容,假定將測試環境的數據域按照存儲數據的結構來劃,則數據域規劃方案如下:
而在一個域內部,則可以根據業務數據的特性採用靈活的分區管理方式,將一張表的存儲分散到多個物理位置,大大的減少單次操作讀取的數據量,例如對於超大表,多採用多維分區的方式將業務數據集合分成多個子集合,每個子集合的數據分布在數據域內所有的複製組中,對於一些存儲配置信息的小表則可以存儲在指定複製組中,數據存儲示意圖如下:
下面演示一下如何劃分數據域,以及如何通過不同的分區方式來管理超大表和小表。具體步驟如下。
1. 劃分數據域
創建完多維分區表之後,我們簡單插入幾條數據:
{"YEAR": 2021, "Name": "Meppo"}
{"YEAR": 2020, "Name": "Tiny"}
{"YEAR": 2019, "Name": "Tommy"}
{"YEAR": 2020, "Name": "Lion"}{"YEAR": 2020, "Name": "Luna"}
沒有」完美」的規劃,只有合適的規劃,SequoiaDB作為一款開源的金融級分布式關係型資料庫,系統部署規劃方案靈活可配,用戶可以通過數據域的劃分讓用戶可以在複雜集群環境中對資源進行邏輯與物理劃分隔離,可以劃分多個數據組來解決單點數據量大的問題,可以選擇裸盤使用來追求最佳性能,也可以使用硬碟做RAID來降低日常運維的難度,因此只要確認好實際的業務需求,就能制定合適的部署規劃方案。
往期技術乾貨