1. 程式人生 > >分散式系統基礎知識

分散式系統基礎知識

1、常見指標

Send 1M bytes over 1Gbps network(基於千兆網傳輸1M資料):10ms

Round trip within data center(同資料中心請求讀取):0.5ms

Disk seek(磁碟尋道時間):8~10ms

Read 1MB sequentially from disk(從磁碟順序讀取1M資料):20~25ms

Read 1M sequentially from memory(從記憶體順序讀取1M資料,速率為:40~50M): 0.25ms

2、效能估算

需要假設程式的執行環境,如叢集規模及機器配置,叢集上其它服務佔用資源的比例。

常見估算場景:

1)、記憶體排序時間估算:排序時間 = 比較時間(分支預測錯誤) + 記憶體訪問時間。

2)、MapReduce應用處理時間:Map處理時間 + shuffle和排序時間 + reduce處理時間(雖然shuffle、map處理和排序可以部分並行,但效能估算的時候不必考慮);Map處理時間 = 輸入讀取時間 + Map函式處理時間 + 輸出中間結果時間;Reduce處理時間 = reduce函式處理時間 + 最終結果輸出時間

3)、Bigtable設計的效能指標分析:單個磁碟讀取時間:磁碟尋道時間 + 讀取時間;可達到的理論值:n個盤*1/單個磁碟讀取時間

3、CAP

一致性(Consistency):任何一個讀操作總是能讀取到之前完成的寫操作結果;

可用性(Availability):每一個操作總是能夠在確定的時間內返回;

分割槽可容忍性(Tolerance of network Partition):在出現網路分割槽的情況下,仍然能夠滿足一致性和可用性;

CAP理論認為,三者不能同時滿足,證明如下:假設系統出現網路分割槽為G1和G2兩個部分,在一個寫操作W1後面有一個讀操作R2,W1寫G1,R2讀取G2,由於G1和 G2不能通訊,如果讀操作R2可以終結的話,必定不能讀取寫操作W1的操作結果。

4、一致性模型

1)強一致性

2)弱一致性:存在“不一致性視窗”,不能保證後續讀取操作能讀取到最新值。

3)最終一致性:,如果沒有失敗發生的話,“不一致性視窗”的大小依賴於以下的幾個因素:互動延遲,系統的負載,以及複製技術中replica的個數。

5、NOSQL與SQL

常見模型:

KV模型:只支援最簡單的針對<key, value>對的操作;

支援簡單table schema的模型,如Bigtable模型

NOSQL有一些共同的設計原則:

假設失效是必然發生的

限定應用模式,支援的介面永遠不可能和SQL相比

擴容支援成倍增加,常用演算法:一致性Hash

6、Two-Phase commit

說明參考:http://www.nosqlnotes.net/archives/62#more-62

Two-phase commit的演算法實現 (from <<Distributed System: Principles and Paradigms>>):
協調者(Coordinator):
write START_2PC to local log;
multicast VOTE_REQUEST to all participants;
while not all votes have been collected {
wait for any incoming vote;
if timeout {
write GLOBAL_ABORT to local log;
multicast GLOBAL_ABORT to all participants;
exit;
}
record vote;
}
if all participants sent VOTE_COMMIT and coordinator votes COMMIT {
write GLOBAL_COMMIT to local log;
multicast GLOBAL_COMMIT to all participants;

} else {
write GLOBAL_ABORT to local log;
multicast GLOBAL_ABORT to all participants;
}
參與者(Participants)
write INIT to local log;
wait for VOTE_REQUEST from coordinator;
if timeout {
write VOTE_ABORT to local log;
exit;
}
if participant votes COMMIT {
write VOTE_COMMIT to local log;
send VOTE_COMMIT to coordinator;
wait for DECISION from coordinator;
if timeout {
multicast DECISION_REQUEST to other participants;
wait until DECISION is received; /* remain blocked*/
write DECISION to local log;
}
if DECISION == GLOBAL_COMMIT
write GLOBAL_COMMIT to local log;
else ifDECISION == GLOBAL_ABORT
write GLOBAL_ABORT to local log;
} else {
write VOTE_ABORT to local log;
send VOTE_ABORT to coordinator;
}

另外,每個參與者維護一個執行緒專門處理其它參與者的DECISION_REQUEST請求,處理執行緒流程如下:
while true {
wait until any incoming DECISION_REQUEST is received;
read most recently recorded STATE from the local log;
if STATE == GLOBAL_COMMIT
send GLOBAL_COMMIT to requesting participant;
else if STATE == INIT or STATE == GLOBAL_ABORT;
send GLOBAL_ABORT to requesting participant;
else
skip; /* participant remains blocked */
}

如果協調者出現類似磁碟壞這種永久性錯誤,該事務將成為被永久遺棄的孤兒。一種可行的解決方法是當前的協調者宕機的時候有其它的備用協調者接替,用於同一時刻只能允許一個協調者存在,二者之間有一個選舉的過程,這裡需要用到Paxos協議。

7、Paxos

Paxos選舉過程如下:
 Phase 1
(a) A proposer selects a proposal number n and sends a prepare request with number n to a majority of acceptors.
(b) If an acceptor receives a prepare request with number n greater than that of any prepare request to which it has already responded, then it responds to the request with a promise not to accept any more proposals numbered less than n and with the highest-numbered proposal (if any) that it has accepted.
 Phase 2
(a) If the proposer receives a response to its prepare requests (numbered n) from a majority of acceptors, then it sends an accept request to each of those acceptors for a proposal numbered n

with a value v, where v is the value of the highest-numbered proposal among the responses, or is any value if the responses reported no proposals.
(b) If an acceptor receives an accept request for a proposal numbered n, it accepts the proposal unless it has already responded to a prepare request having a number greater than n.

相關推薦

分散式系統基礎知識

1、常見指標 Send 1M bytes over 1Gbps network(基於千兆網傳輸1M資料):10ms Round trip within data center(同資料中心請求讀取):0.5ms Disk seek(磁碟尋道時間):8~10ms Read 1MB

Linux操作系統基礎知識part4

linux操作系統 表示 占用內存 lin part 子進程 df -h sed use top僵屍進程 失去了父進程的子進程,占用內存不占用cpucpu的利用率:實際單位時間內計算的工作量cpu的負載:cpu被安排的工作量 freebuffers 表示內存往硬盤存寫的數據

Linux操作系統基礎知識(五)

狀態 -exec acer res ifconfig 查找 mas 配置文件 update ifconfig 命令查看網絡信息eth0 eth1em1 em2p2p2 p2p3 systemctl status network 查看網絡狀態systemctl start n

操作系統基礎知識總結(一)

一個 快速 會有 處理死鎖 b2c fcm 死鎖 空間 存儲系統 1. 進程和線程的區別 進程 進程,即正在運行的程序,程序從硬盤載入到內存就變成進程。進程是資源的擁有者,每個進程都擁有著自己的內存空間與多個線程。 線程 線程是指令的執行者,是計算機執行指令的基本單元,一個

操作系統基礎知識

系統調用 輸出 人員 輸入 編寫程序 線路 其他 概念 以及 1.為何要有操作系統 計算機系統主要由處理器,主存、硬盤、鼠標、顯示器、網絡接口、打印機、及其他輸入輸出設備組成,為了更方便地對這些硬件進行控制同時便於編寫程序,有了操作系統,程序員就不用了解硬件的所有細節,只需

信息系統基礎知識

信息系統項目管理師信息系統基礎知識

Linux系統基礎知識

一級目錄 結構 高亮 6.5 可用 運行 進制 star 選擇 1、linux概述 ??Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議

Linux系統基礎知識(二)基於linux系統下的用戶管理操作以及文件操作補充

c99 數據塊 upa 系統數據 精確 passwd 列表 sudo 3.4 1、(思考)系統中為什麽要有用戶 1.1用戶??系統中最底層的安全設定,回收(限制)權利。1.2組??共享權利。分為以下兩種:??(1)附加組:由用戶決定的組(每個用戶不一定都有);??(2)初始

Hadoop簡介(分散式系統基礎架構)

Hadoop 求助編輯百科名片    Hadoop示意圖 一個分散式系統基礎架構,由Apache基金會開發。使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。充分利用叢集的威力高速運算和儲存。Hadoop實現了一個分散式檔案系統(Hadoop Distri

[轉]分散式系統架構知識體系

註明:原文由【薛定諤貓】發表於其個人微信公眾號【架構師是怎樣煉成的】中。   雙十一終於過去了,趁雙十二的需求還沒下來前,晚上稍微有點時間搞點自己的事情了,距離上篇微信公眾號文章已經過去快三個月了,今天決定寫一篇關於分散式知識體系的文章,分散式架構整個知識體系紛繁複雜,不加以總結很難形成知

20181126-資訊系統基礎知識

 學習目標   聽<資訊系統基礎知識> 一節      待解決問題   構件的概念 ?     構件是面向軟體體系架構的可複用軟體模組。構件(component

20181126-信息系統基礎知識

數據庫 -- 系統開發 可復用 nbsp 遠程 關系 rpc 基本 學習目標   聽<信息系統基礎知識> 一節 待解決問題   構件的概念 ?     構件是面向軟件體系架構的可復用軟件模塊。構件(component)是可復用的軟件組成成份,可被用

嵌入式系統基礎知識:瞭解嵌入式系統

嵌入式系統用於大量電子裝置,它們的設計涉及到硬體和軟體技術。隨著計算機技術的進步,其技術也越來越多地嵌入到越來越多的電子產品中。 嵌入式系統提供的功能是使電子裝置具有比僅使用硬體技術時更大的能力。因此,嵌入式系統可用於各種電子裝置和小工具中。從電子計時器等專案中的少量處理,到遊戲控制檯甚至主要工廠和

嵌入式系統基礎知識:什麼是微控制器MCU

在開發嵌入式系統時,其中一個選擇是將計算硬體基於微控制器,而不是微處理器MPU。 這兩種方法都有其吸引力,但通常它們將在不同的應用中找到。通常,微控制器MCU可用於大小,低功耗和低成本是關鍵要求的應用中。 MCU微控制器與微處理器的不同之處在於它在一個晶片內包含整個處理引擎的更多元素。它將大

20181204-信息系統基礎知識

而且 外部 獲取 反饋 包括 特定 nbsp 存儲 方法 學習目標   聽<信息系統基礎知識> 一節 待解決問題   構件的概念 ?     構件是面向軟件體系架構的可復用軟件模塊。構件(component)是可復用的軟件組成成份,可被用來構造其他

20181128-信息系統基礎知識

價值 質量 階段 基礎 nbsp 解決 開發 語言 ive 學習目標   聽<信息系統基礎知識> 一節 待解決問題   構件的概念 ?     構件是面向軟件體系架構的可復用軟件模塊。構件(component)是可復用的軟件組成成份,可被用來構

Ubuntu系統基礎知識

Ubuntu系統學習 基礎知識 Ubuntu 目錄和檔案系統 /bin --重要的二進位制應用程式 /boot --啟動配置檔案 /dec --裝置檔案 /etc --配置檔案、啟動指令碼等 /home --本地使用者主目錄 /lib --系

20181210-資訊系統基礎知識

 學習目標   聽<資訊系統基礎知識> 一節      待解決問題   構件的概念 ?     構件是面向軟體體系架構的可複用軟體模組。構件(component

系統架構設計師:資訊系統基礎知識

1.資訊庫(repository)         資訊工程工具中,一般都具有儲存開發資訊和進行協調控制功能的計算機化的資訊庫。資訊庫中積累了資訊系統的規劃、分析、設計、構成各個階段的相關開發資訊,以及系統維護的有關資訊,並提供綜合資訊的工具,是資訊工程工具的核心部分。

Kafka訊息系統基礎知識索引

我們在《360度測試:KAFKA會丟資料麼?其高可用是否滿足需求?》這篇文章中,詳細說明了KAFKA是否適合用在業務系統中。但有些朋友,還不知道KAFKA為何物,以及它為何存在。這在工作和麵試中是比較吃虧的,因為不知道什麼時候起,KAFKA似乎成了一種工程師的必備技能。 一些觀念的修正 從 0.9 版本開