本文簡要介紹 SunlightDB 架構設計,主要受眾是想要了解 SunlightDB 內部結構的開發人員和用戶,

基礎模型
SunlightDB 是一個分布式資料庫,可以部署到多臺服務器中組成一個分布式資料庫集群,集群中的每臺SunlightDB服務器實體具有同等地位,這些SunlightDB 實體由統一的協調服務(比如 ZooKeeper)鏈接到一起,
SunlightDB 存盤單元是表和行,支持行資料的查詢、插入和更新(新版本支持更新不支持洗掉)操作,每個表都有一個強制主鍵,該主鍵用于自動將表拆分為多個大約 500MB 的磁區,每個磁區存盤在集群中的 N 個服務器節點上,SunlightDB 磁區的每個副本按照段檔案的日志合并樹結構,存盤在相應服務器上,段檔案使用 CSTable檔案格式進行編碼,CSTable 是一種支持列式存盤的容器檔案格式,
查詢模式
可以通過 SunlightDB 客戶端(連接到 SunlightDB 集群)創建和管理表,執行資料查詢等操作,當客戶端想要對資料執行 SQL 或 MapReduce 查詢時,可以將查詢陳述句發送到集群中的任何 SunlightDB 服務器節點,
SunlightDB 首先識別查詢陳述句中參考的所有表,然后識別每個表需要掃描的磁區,然后將查詢陳述句重寫為分片查詢,分片查詢中涉及到的所有分片在相應的 SunlightDB 服務器上并行執行,從而最大限度地減少資料傳輸,
在每個分片上,從服務器上的 CSTable 檔案中加載回應查詢所需的資料子集(即僅表中實際參考的列),最后所有分片查詢結果合并到一起,回傳給客戶端,
資料一致性
SunlightDB 支持最終一致性,即更新或插入操作最終是一致的(足夠時間范圍內所有副本都將同步),資料寫入沖突的解決是自動的(微秒粒度內最新寫入勝出),
資料分片和資料的重新平衡都是自動和透明的,每個表都有一個可配置的復制因子 N,用于控制每個磁區存盤的服務器節點數量,SunlightDB 最多可以容忍 N-1 次故障,并且仍然為每個磁區提供讀寫服務,默認情況下,N 為 3,可容忍的故障數為2,
每個磁區同時由 N 個服務器節點提供服務,其中 N 稱為復制因子,從磁區的所有副本中,我們選出一個作為領導者Leader,并指定其他副本為追隨者Follower,所有磁區都可以執行資料的讀操作,只有Leader可以執行寫入(比如Zookeper Raft演算法),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/347195.html
標籤:區塊鏈
