分佈式系統中的一些名詞解釋

nosql: not sql 或者 not only sql

CAP理論基礎:

一致性: 分爲強一致性、弱一致性。
強一致性:所有的讀操作總是能讀取到上一次寫的數據
弱一致性:有的讀操作讀到的不是上一次寫的數據, 常見的有最終一致性,顧名思義,客戶端最終能讀到上一次寫的數據,在互聯網應用比較常見。

高可用:即使在有機器發生故障的情況下系統仍然能正常提供服務

分區可容忍:在分佈式情況下,機房或網絡故障仍然能夠滿足一致性和高可用

關係數據庫的ACID:
A: 事務的原子性
C: 數據一致性
I: 獨立性,其他事務不可見
D: 持續性,事務完成後更新持久化存儲

tombstones: 直譯爲“墓碑”, 用來表示數據的生命週期(數據過期和刪除操作)

hinted handoff: 臨時轉移的意思,當有節點臨時掛掉,其上新寫的數據會轉移到其他節點,節點恢復後再轉移回來,這個過程對用戶是透明的。

commit log: 即redolog, 先寫日誌,後寫磁盤,將隨機寫轉化爲順序寫,除了性能提升還能保證不丟數據 ,文件以APPEND模式打開的時候write系統調用是原子操作。

memtable:即內存表:將新數據或常用數據保存在內存表,可以減少磁盤IO訪問

compaction: 壓縮, 磁盤上或網絡上數據都可以壓縮,節省磁盤空間或網絡帶寬

gossip: 是一個算法,又稱”反熵“,意思就是從雜亂無章的狀態中尋求一致,每個節點都要跟其他所有的節點通信。在dynamo和cassandra等p2p分佈式系統中使用。

monitor: 監控,任何分佈式系統都必須有監控機制,對於運維很重要。

master:在hadoop中稱爲namenode, 管理數據服務器。需要注意master的單點問題。

一致性hash算法:對傳統hash算法的改進,當路由發生變化的時候數據遷移量較少。

replication: 複製,通過數據冗餘保證數據不丟失,副本也可以提供讀寫服務, 這裏會有數據一致性的問題。 replication也有很多種策略,比如機房、機架等

paxios: 選舉算法,奇數個節點,保證系統的高度可用

w+r>n: 強一致性,w表示寫成功的個數,r表示讀到最新數據的次數,n表示副本個數

failover: 一個或多個節點發生故障,系統能自動恢復到正常狀態

recovery: 節點重啓後從磁盤上的文件恢復

gc: 垃圾回收

負載均衡: 所有節點上的數據或任務均勻

鎖: 獲取/釋放鎖的操作位於分佈式系統的不同節點上

分佈式事務:事務的參與者位於分佈式系統的不同節點上

分佈式消息隊列: 一個隊列會保存在分佈式系統中不同的節點上

列存儲: 關係數據庫一般都是行存儲,nosql 多采用列存儲,free-schema,列特別多的時候性能會比較差

兩階段提交: 將事務的提交分成兩個階段,事務處理器向存儲服務器先發送”準備提交“的請求,存儲服務器收到請求後執行修改,但是處理完成後只是返回”可以提交“的應答,事務處理器收到後發送”提交完成“的請求,存儲服務器修改將事務的狀態由”可以提交“置爲”提交完成“。如果事務處理器沒有收到”可以 提交“的應答,則回滾該事務;如果存儲服務器沒有收到第二階段的”提交完成“的請求,則回滾”可以提交“的事務。 這是分佈式事務常用的一種處理方式。

數據遷移: 數據從一個節點遷移到其他節點,發生在負載均衡、節點變化等時候

數據分裂: 當數據量達到閾值,存儲數據的單元一份爲二

雲: 個人覺得雲是服務的總稱,粗略分爲存儲和計算兩塊,存儲細分的話有關係數據庫/類nosql/類kv存儲/其他(比如隊列),或者持久化存儲/臨時存儲/緩存,計算的話有m/r,實時處理等,編程模型更貼切一點。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章