SequoiaDB巨杉資料庫基於已獲專利的全分散式邏輯時鐘機制,構建時間序列協議(STP,Sequence Time Protocol)。該協議用於 SequoiaDB內部邏輯時間同步,邏輯時間是SequoiaDB內部用於表示時間,但區別於實際時間的邏輯時間戳。STP維護邏輯時間,提供邏輯時鐘服務,而邏輯時間戳主要用於全域性事務處理。
技術說明
分散式資料庫架構下要保障事務一致性,必須藉助分散式事務,而分散式事務需要分散式資料庫提供一個全域性統一的事務號,準確標識不同會話的先後順序。為了保證分散式資料一致性,大多數廠商透過GTM(Global Transaction/Time Manager)解決方案提供統一的事務ID或時鐘服務,從而導致每次事務操作都需要跨伺服器進行。隨著伺服器規模的擴充套件,中心節點的處理能力降低,事務延遲增大,導致系統擴充套件能力受到極大限制。部分資料庫廠商為了保證資料一致性選擇放棄2PC提交模式,轉而使用1PC加業務補償策略,但在嚴格的事務一致性需求場景下將無法應用。
一、STP技術簡介
作為業界原生分散式資料庫以及新一代分散式資料庫的代表,SequoiaDB能夠實現分散式交易和ACID與傳統技術完全相容,實現架構和功能特性與傳統資料庫完全相容,以提供完整的事務支援和一致性保障,充分保證資料安全,滿足核心交易業務的嚴苛要求。
STP以節點形式部署在SequoiaDB叢集的每個機器中,以提供邏輯時鐘服務。STP節點分為Server和Client兩種角色,各STP Server之間透過Raft保證邏輯時鐘的強一致性,避免了強制所有參與節點從GTM中獲取唯一ID的步驟,每個資料庫節點透過本地的STP Client與主STP Server保持邏輯時鐘一致性,並透過專利技術確保邏輯時鐘持續向前推進,防止出現衝突。
其特點包括:
●單調遞增性:邏輯時鐘始終保持單調遞增,不受物理時鐘回撥影響;
●高可靠性:STP Server 一主多備,採用一致性 Raft 協議同步邏輯時鐘;
●高可用性:STP Client 與 Server 之間採用 DEBTP(Dynamic Error Based Time Protocol ) 同步邏輯時間,且 Server 與每個 Client 之間都維持獨立的動態時間誤差,既可以適應網路抖動,也可以滿足不同節點的複雜網路狀態。時間誤差根據時間同步、網路狀態進行動態調整;
●高效能:STP Client採用共享記憶體方式對外提供時間服務,讓邏輯時間的獲取為本地呼叫,沒有任何網路開銷,效能為納秒級。
STP始終保持單調遞增的方法如下:
1. STP Server採用一主多備,透過Raft協議同步ULT,並確保多數派成功。選主時,ULT最大的節點當選主節點;
2. STP Server重啟或切主時,會從本地持久化中獲取儲存的ULT,獲取當前的物理時間LRT並重新計算ULT。計算新的ULT時,如果 LRT > ULT + 同步週期則 ULT = LRT,否則 ULT = ULT + 同步週期。新的ULT將透過透過Raft協議同步至其他節點;
3. 當STP Client LLT > ULT時,則該STP Client需要阻塞時間服務,直到ULT >= LLT;
4. 當STP Client故障時,在一個同步週期內STP Client還可以提供時間服務,超時後則不能提供;同時,STP Client提供命令讓外部呼叫促發即時時間同步。
二、基於STP的分散式事務
SequoiaDB 基於STP的分散式事務能夠提供完整的事務支援和一致性保障,其特性如下:
●高併發能力:全域性事務GID由接入節點本地生成,不存在全域性單點瓶頸,沒有網路開銷,GTID生成在”納秒“級;
●線性擴充套件能力:透過增加“接入接點”即可完成事務處理能力的線性擴充套件;
●高效能:在事務訪問記錄不衝突時, 或者事務之間不出現邏輯時間衝突時,全域性事務退化為本地事務,不引入任何其它成本開銷,實現高效能;
●全域性一致的可見性:當事務的邏輯時間不出現衝突時,透過邏輯時間的大小比對即可決定相關事務在全域性的可見性;當事務的邏輯時間出現衝突時,則引入“可見性仲裁”來決定相關事務在全域性的可見性。
三、基於STP的分散式事務校時機制
GTID 由 節點ID + LLT 組成,全域性唯一。事務包含開始時間(LTb),預提交時間(LTpc)、提交時間(LTc)以及時間誤差(LTError), LTb < LTpc + LTError, LTpc <= LTc。兩個事務的可見性判斷遵守STP邏輯時間比較規則, Δ取兩個事務中最大的時間誤差。如果兩個事務比較為“≡”,則需要進行“可見性仲裁”。
建立事務校時,事務從 Coordinator 到 Node建立時,Node會從本地 STP Client 獲取 LLT進行校時,如果相差大於指定閾值,則需要進行事務重試。該校時用於快速發現節點的時間是否同步。
提交事務校時,在預提交階段,Node需要從本地STP Client中獲取LLT進行校時,如果相差大於指定閾值,則需要進行事務預提交重試。Node在預提交時,需要返回 max(本節點最大的事務開始時間,本節點預提交處理時間)。Coordinator選取 max(Node返回時間,預提交時間) 作為最終的事務提交時間。
四、基於STP的分散式事務“一致性2PC”機制
傳統事務2PC機制在“2PC: Commit”階段發生故障時,會出現有的分割槽資料已提交而有的分割槽資料狀態不確定的情況。而“一致性2PC”機制會在Pre-Commit時共享事務分割槽資訊,讓參與事務的分割槽相互感知;分割槽執行Pre-Commit後進入WAIT_COMMIT狀態。在 “2PC: Commit”階段出現分割槽一致性時,處於WAIT_COMMIT的事務會發起一致性確認來修正事務狀態,一致性確認協議自動修復極端情況下事務的一致性。
修正事務狀態規則如下:
1)任一分割槽回滾則回滾;
2)任一分割槽提交則提交;
3)全部為 WAIT_COMMIT 則提交。
開發團隊
●帶隊負責人
巨杉資料庫STP技術專案的帶隊負責人是CTO王濤、研發副總裁許建輝、何國明等。
●隸屬機構:巨杉資料庫
巨杉資料庫是一家專注分散式資料庫技術研發,以全球資料庫的領導者為願景,以培育資料沃土,提升資料價值為使命的國產自研資料庫公司。
巨杉資料庫自2011年成立以來,專注資料庫技術研發,堅持從零開始打造原生分散式資料庫引擎,連續三年入榜 Gartner報告,成為當前新一代主流資料庫體系的燈塔廠商。
SequoiaDB巨杉資料庫是一款金融級分散式資料庫,目前已在超過100家大型銀行核心生產業務規模應用,並廣泛應用於證券、保險、電信、政府、網際網路、交通等領域,企業使用者總數超過1000家,應用場景包括分散式線上交易、資料中臺、分散式內容管理、實時資料管理等。
巨杉資料庫擁有世界頂級的資料庫研發團隊,分佈在廣州、深圳、北京等地,核心團隊成員主要來自於前IBM DB2北美研發團隊和華為分散式儲存團隊,天生具備企業級基因,同時引入包括阿里在內的國內創新型企業人才,是業界最頂尖的企業級分散式資料庫團隊。目前公司總人數約為170人。
相關評價
●民生銀行
巨杉資料庫採用原生分散式架構,提供完整SQL相容,完整支援ACID和分散式事務,具備災備和多活機制。這些對於金融聯機交易業務以及互金核心等是不可或缺的核心能力。
●廣發銀行
儲存資源池化、資料庫例項化、雲化的產品架構,是微服務架構下,SequoiaDB這樣的新一代資料庫重要的技術特點。
●恆豐銀行
面對海量內容資料,具備多型別資料統一管理,儲存彈性擴張,高可用和多活的分散式資料庫是一種新主流方向。