在本系列的第一篇中,簡述了sequoiadb的安裝,以及乙個(偽)集群的部署
第二篇和第三篇對sequoiadb的集群,做了簡單地操作。
在本篇中,將對sequoiadb的架構進行簡單的分析。
因為自身能力有限,對於架構這麼高大上的主題,不敢輕言。因此本文會摘抄sequoiadb官方的描述,加上自己的理解,達到共同學習的目的。
在解析之前,先簡單敘述一下分布式系統的cap理論:
c:代表一致性,即在某時刻,分布式系統中節點資料應該是相同的;
a:代表可用性,即有求必應,在分布式系統中某節點後,統一集群內的其它節點依然能處理遠端的請求;
p:代表分割槽容忍性,即系統中某節點無法連線(
故障)後
,同屬集群內的其它節點
能繼續提供服務。
由於某些原因,例如網路環境惡劣,災備處理缺乏等,沒有任何乙個分布式產品全部實現了cap。故目前的分布式系統,都是在c和a中做出選擇。
如果考慮c,就必須對節點做多個備份,在寫資料時,同步寫其它備份節點,都完成才返回。大併發情況下,無法及時響應,導致不可用。
如果考慮a,就無法保證資料(真的)寫入多個備份節點,而訪問備節點的請求獲取到的資料可能是過期的資料。
sequoiadb中,在大規模分布式環境中提供了資料最終一致性的保障。並且提供方式,切合使用者業務場景,使資料庫系統既具備一定的安全性,又具備一定的可用性。
使用者可以權衡自己的應用場景,在建立collection(集合)的時候,合理設定replsize的數值。
sequoiadb的整體架構圖如下:
資料庫系統提供一組協調節點,供客戶程式訪問。可以理解成為資料庫的**。
既然是**,因此協調節點僅
保持客戶端的連線,作為請求分發節點將使用者請求分發至相應的資料節點,
並不儲存任何使用者資料,
。在協調節點之後,有資料節點組和編目節點組。
編目節點儲存系統的元資料資訊,像該資料庫有幾個使用者,有幾個資料組,資料組中有哪些cs,又有哪些cl,以及建立cl時候的一些選項值等。協調節點通過與編目節點通訊從而了解資料在資料節點中的實際分布。乙個或多個編目節點可組成複製組集群。
使用者的資料儲存在資料節點中。乙個或多個資料節點可以構成乙個資料節點組(官方稱之為分割槽組,複製組)。資料節點組中每個資料節點都儲存該複製組的乙份完整資料,又稱為複製組例項(或分割槽組例項);複製組中的資料節點之間採用最終一致性同步資料,不同的複製組中儲存的資料無重複。
乙個資料節點組,必須有乙個主節點,來處理使用者的寫請求。在考慮更高可用性的場景下,使用者的寫操作,會先寫在主節點上,然後通過同步機制,備節點可以從主節點獲取到使用者的操作和資料,對節點的資料進行更新和儲存。而對於使用者的讀操作,可以從資料節點上的任何乙個節點上得到處理。
其實在集群環境中,所有的讀、寫等請求,都是從協調(coord)節點分發下來的(當然,直連資料節點組中的節點的情況除外)。上圖所描述的,是把協調節點省略掉了(不信?可以看看原始碼中的pmd模組和rtn模組)。
當集群中,主節點故障了,在集群節點中的通訊機制發現之後,會發起選舉,從備節點中選擇新的主節點,繼續接受和處理客戶端的請求。關於選舉部分,可以通過「二次選舉」關鍵字搜尋,維基百科上描述得比較詳細 :)
選舉是有條件的,在sequoiadb中,選舉的發起,必須是除故障節點外所有節點的數目,大於集群內所有節點資料的一半。可能我描述得不太準確,用公式說明吧。
假設乙個集群內,所有節點數是 t(total),故障的節點數是d(dump),選舉的發起條件則是: true == (t-d) > t/2。當然,在正常情況下,集群中的主節點也會自發的在各個節點中進行切換,選擇最佳的節點作為集群主節點。
當發現節點故障了,dba對故障進行了處理,並恢復了故障節點。這個時候,恢復的節點會在啟動之後,充當從節點,從主節點中拉取資料,做到資料的備份。
圖示如下:
sequoiadb整體架構基於上述機制,但是如何做到,就得慢慢分析其原始碼。更多簡介,請去sequoiadb官網資訊中心獲取。
唉,花了好久時間,感覺講的還是不太清楚,而且只是業務上的架構,並沒有涉及技術層面的架構。
招牌寫上去。
真是敗筆啊。
我再找時間,去嘗試一下sequoiadb的事務功能是如何使用的。據說,mongodb在目前的版本中,也沒有提供事務的功能。看樣子,其實國產軟體,不一定輸國外軟體。
ps:說到國產軟體,不禁就會想起給自己和朋友配電腦時候,cpu,硬碟,記憶體,核心配件,居然都是國外的。龍芯火過一陣之後,也慢慢銷匿。在軟體產品方面,遊戲引擎、資料庫等軟體,也大都出自國外。在nosql慢慢公升溫的情況下,殺出乙個能和mongodb這個行業老大競爭的sequoiadb資料庫,作為軟體從業者,其實心裡還是感到很自豪的。由衷希望國內會出現更多的牛逼軟體產品,為我國人爭光。
*****>the end
yarn的學習之1 架構
本文翻譯自 譯註 原文說得有些過於簡單的,並且有些混亂。yarn由兩個部分的守護程式構成 資源管理 排程 監控。乙個應用要麼是乙個作業,要麼就是由作業構成的dag 多個job 多個job yarn的資料計算框架由rm和節點管理器 nodemanager nm 構成.rm負責管理所有應用的資源。nm其...
ARM GIC(四) gicv3架構基礎
gicv3架構是gicv2架構的公升級版,增加了很多東西。變化在於以下 對於cpu inte ce的暫存器,增加系統暫存器訪問方式 一 gicv3結構 下圖是gicv3的架構。包含了以下的元件 其中,cpu inte ce是實現在core內部的,distributor,redistributor,i...
優化系列 X86架構彙編優化系列彙總
date 2020.9.5 優化系列 x86優化之純彙編優化方法 優化系列 x86優化之intrinsic彙編方法 優化系列 x86優化之gcc 內聯彙編 優化系列 x86asm彙編優化demo 優化系列 x86優化之intrinsic彙編demo optimizaiton x86 x86 sse ...