標籤:
PostgreSQL Replication系列翻譯自PostgreSQL Replication一書
在本章中,將會介紹不同的複製概念,您會瞭解哪些類型的複製對哪一種實用情境是最合適的。 在本章的最後,您將能夠判斷某個概念在各種情況下是否是可行的。
我們在本章將介紹以下主題:
• CAP理論
•複製的物理限制
•為什麼延遲有影響
•同步和非同步複製
•拆分和複製
在我們使用PostgreSQL實際工作之前,我們將引導您完成一些非常基本的與複製相關想法和事實。
1.1 CAP理論和物理限制
您可能會問,為什麼一個理論可以在一本書這樣一個突出的地方被發現,這被認為是非常實用的。那麼,有一個很簡單的理由:一些商務資料庫廠商的一些看起來很好看的市場方案留給您的印象是一切皆有可能,是沒有任何嚴重限制的,容易做的。這並不是事實;每一個軟體供應商必須處理這些限制。沒有任何辦法繞過自然規律,市場並不能克服自然。
在本章中,您將被介紹到所謂的CAP理論。在解決一些不能被變成現實的需求的情況下,理解這一理論的基本思想是必不可少的。
1.1.1 理解CAP理論
在我們深入到細節之前,我們必須討論CAP的實際意義。CAP是一下三個特徵的縮寫:
Consistency(一致性):該特徵表明叢集中的所有節點在同一時刻是否看到了相同的資料。
Availability(可用性):該特徵表明是否所有的請求都可以收到一個返回結果。使用者是否可以認為一個叢集中的所有節點是可用的?在兩台機器之間拆分資料或狀態資訊。發出一個請求,機器1有一部分資料,機器2擁有剩餘部分的資料。如果任何一台機器出現故障,並不是所有的請求都可以被滿足,因為並不是所有的資料或狀態資訊在任何一台機器上都是可用的。
Partition tolerance(分區容忍性):該特徵表明在工作過程中如果有任意的訊息丟失,系統是否能夠繼續工作。當一個系統不再接受訪問時(考慮一個網路連接失敗),就會發生一個網路磁碟分割事件。考慮分區容忍性的一個不同的方法是把它作為訊息傳遞。如果一個專用系統不能再發送/接收訊息到/從其他系統,它已被有效地從網路中除去。
為什麼這前三個要點與普通使用者有關呢?壞訊息是一個複製(或分布)系統只能同時提供2/3的特徵。
在理論上是不可能同時提供一致性,可用性,分區容忍性。正如您將在本書後面看到的,這對系統的的安全和可用的布局有顯著的影響。根本沒有如此簡單的事情作為解決所有複製相關的問題。當您規劃一個大規模的系統,您可能要想出不同的概念去滿足您的需求,這些概念取決於您的需要。
[PostgreSQL,Oracle,DB2等等將為您提供Cap,而NoSQL系統,例如,MongoDB 或者 Cassandra 將為您提供cAP。這就是為什麼NoSQL通常被稱為是最終一致的。]
1.1.2 為什麼光速重要
光速不僅是一個理論問題,它確實會對您的日常生活產生影響。更重要的是,它對您找到適合您叢集的解決方案有重要的含義。
我們都知道,宇宙的極限速度是光速。那麼,為什麼要在乎?好吧,讓我們做一個簡單的心裡實驗。讓我們假設我們的資料庫伺服器以3GHz的時脈速度運行。
在您的CPU的一個刻度內光可以走多遠的距離?如果您計算的話,您會發現光在每個刻度(純真空)走的距離為10厘米。我們可以假設在CPU內的電訊號會比在真空中的光的幅度較慢。核心思想是:一個刻度10厘米?一點都不多。
為了我們的心理實驗,現在讓我們考慮不同的距離:
•兩個CPU之間的距離
•您的伺服器到隔壁其他伺服器的距離
•您在歐洲中部的伺服器到中國伺服器的距離
考慮到在電路板上的一個CPU核的大小,您可以假設從CPU的一個部分發送一個訊號(儘管他沒有光的速度快)到其他部分相當地快。計算已經在您的CPU的一級緩衝中的兩個資料的和它根本用不了一百萬個刻度。
但是,如果您必須從一個伺服器發送一個訊號到其他伺服器發生了什嗎?您可以安全地假設從伺服器A發送一個訊號到隔壁的伺服器B需要花費很長時間,因為電纜是比較長的。通常情況下,它超過10厘米。除此之外,網路交換器和別的網路組件將產生額外的延遲。(此處電纜的長度不是電纜的頻寬)
[這裡我說的是電纜的長度,而不是關於它的頻寬。]
從歐洲發送訊息(或事物)到中國,通常情況下和發送一些資料到隔壁的伺服器相比要耗費更多的時間。再次,重要的是,這裡的資料量和所謂的延遲時間並不相關。
1.1.3 遠程傳輸
讓我嘗試通過給出一個非常簡單的例子來解釋延遲的概念。假設您是歐洲人,您在發送一封信到中國。您會很容易接受這個事實:您的信的大小並不是這裡的限制因素。不論您的信是兩頁或二十頁,並沒有任何區別;到達目的地所花費的時間是基本相同的。此外,如果您同時發送一封,兩封,十封信也是沒有區別的。考慮到合理的信的數量,運送東西到中國的飛機(頻寬)的大小通常不是問題。但是,所謂的往返很可能是一個問題。如果您依賴來自中國信件的響應來繼續您的工作,您很快就會發現自己等了很久。
1.1.4 為什麼延遲有影響
同樣的概念也適用於複製(replication):如果您從歐洲發送資料區塊到中國,您應該避免等待響應。如果兩台在同一個機架上的伺服器之間發送資料區塊,您可能可以等待響應,因為您的電訊號會足夠快使訊號即使返回。
[本節中描述的延遲的基本問題不是PostgreSQL所特有的。相同的概念和物理限制適用於所有類型的資料庫和系統。和以前一樣,這個事實有時候在閃亮的商業營銷論文裡靜靜地被隱藏和被忽視。儘管如此,物理定律是不變的。這適用於商業和開源軟體。]
最重要的一點,您必須記住的是:在複製環境中,頻寬不總能解決效能問題。在許多設定中,延遲至少和頻寬一樣重要。
PostgreSQL Replication之第一章 理解複製概念(1)