分佈式系統基礎知識

1.分佈式系統是什麼

分佈式系統:算法

  • 一個硬件或軟件組件分佈在不一樣的網絡計算機上,彼此之間僅僅經過消息傳遞進行通訊和協調的系統,這是分佈式系統,在不一樣的硬件,不一樣的軟件,不一樣的網絡,不一樣的計算機上,僅僅經過消息來進行通信與協調。

更細緻的看這些特色又能夠有:分佈性、對等性、併發性、缺少全局時鐘、 故障隨時會發生。數據庫

1.1分佈性:
最顯著的特色確定就是分佈性,從簡單來看,若是咱們作的是個電商項目,整個項目會分紅不一樣的功能,專業點就不一樣的微服務,好比用戶微服務,產品微服務,訂單微服務,這些服務部署在不一樣的tomcat中,不一樣的服務器中,甚至不一樣的集羣中,整個架構都是分佈在不一樣的地方的,在空間上是隨意的,並且隨時會增長,刪除服務器節點,這是第一個特性。緩存

1.2對等性:
對等性是分佈式設計的一個目標。分佈式系統拆分了好多個服務,每一個服務均可能出問題而致使整個系統出問題,所以每一個服務通常都有備份,在服務異常時備份服務能頂替原來異常的服務.
關鍵:這就要求2個服務是徹底對等的,功能徹底一致.好比訂單服務,客戶服務等,其實就是服務副本的冗餘.
還有一種是數據冗餘,如數據庫,緩存和分佈式服務同樣須要有備份存在,這就是對等性.tomcat

1.3併發性
在分佈式系統裏面的併發就不是咱們基礎學習的多線程(單JVM)了,而是更高層,從多進程多JVM角度,好比多個分佈式服務可能併發操做一些共享資源,如何準確並高效的協調分佈式併發操做.服務器

1.4缺少全局時鐘
在分佈式系統中,節點是可能反正任意位置的,而每一個位置,每一個節點都有本身的時間系統,所以在分佈式系統中,很難定義兩個事務糾結誰先誰後,緣由就是由於缺少一個全局的時鐘序列進行控制,固然,如今這已經不是什麼大問題了,已經有大把的時間服務器給系統調用。網絡

1.5故障隨時發生
任何一個節點均可能出現停電,死機等現象,服務器集羣越多,出現故障的可能性就越大,隨着集羣數目的增長,出現故障甚至都會成爲一種常態,怎麼樣保證在系統出現故障,而系統仍是正常的訪問者是做爲系統架構師應該考慮的。多線程


2.分佈式系統協調「方法論」

2.1 分佈式系統帶來的問題架構

  1. 通訊異常:通信異常其實就是網絡異常,網絡系統自己是不可靠的,因爲分佈式系統須要經過網絡進行數據傳輸,網絡光纖,路由器等硬件不免出現問題。只要網絡出現問題,也就會影響消息的發送與接受過程,所以數據消息的丟失或者延長就會變得很是廣泛。
  2. 網絡分區:網絡分區,其實就是腦裂現象。好比有個管理者與一些服務通訊並協調服務,出於一些異常狀況通訊斷了,出現了一個臨時管理者,實際上原來的管理者還在,這樣2個管理者作同一個工做會出現問題
  3. 三態:三態其實就是成功,與失敗之外的第三種狀態,叫超時態。
    在一個jvm中,應用程序調用一個方法函數後會獲得一個明確的相應,要麼成功,要麼失敗,而在分佈式系統中,雖然絕大多數狀況下可以接受到成功或者失敗的相應,但一旦網絡出現異常,就很是有可能出現超時,當出現這樣的超時現象,網絡通信的發起方,是沒法肯定請求是否成功處理的。
  4. 節點故障: 節點故障在分佈式系統下是比較常見的問題,指的是組成服務器集羣的節點會出現的宕機或「僵死」的現象,這種現象常常會發生

.併發


2.2 CAP理論負載均衡

CAP其實就是一致性,可用性,分區容錯性這三個詞的縮寫。

  • C 一致性:數據在分佈式環境下的多個副本之間可否保持一致性,這裏的一致性更可能是指強一致性;這裏說的一致性和前面說的對等性其實差很少。若是可以在分佈式系統中針對某一個數據項的變動成功執行後,全部用戶均可以立刻讀取到最新的值,那麼這樣的系統就被認爲具備【強一致性】。
  • A 可用性:分佈式系統一直處於可用狀態,對於請求老是能在有限的時間內返回結果致性;這裏的重點是【有限的時間】和【返回結果】,爲了作到有限時間用到了緩存,負載均衡,爲了返回結果考慮服務器主備.
  • P 分區容錯性:除非整個網絡故障,分佈式系統在任何網絡或者單點故障時,仍能對外提供知足一致性和可用性的服務;

CAP具體描述:

clipboard.png


2.3. BASE理論

即便沒法作到強一致性,但分佈式系統能夠根據本身的業務特色,採用適當的方式來使系統達到最終的一致性;

  • BasicallyAvaliable基本可用:當分佈式系統出現不可預見的故障時,容許損失部分可用性,保障系統的「基本可用」;體如今「時間上的損失」和「功能上的損失」;e.g:部分用戶雙十一高峯期淘寶頁面卡頓或降級處理;
  • Soft state軟狀態:容許系統中的數據存在中間狀態,既系統的不一樣節點的數據副本之間的數據同步過程存在延時,並認爲這種延時不會影響系統可用性;e.g:12306網站賣火車票,請求會進入排隊隊列;
  • Eventually consistent最終一致性:全部的數據在通過一段時間的數據同步後,最終可以達到一個一致的狀態;e.g:理財產品首頁充值總金額短時不一致;

分佈式一致性算法:
常見分佈式一致性算法:2p,3p,paxos,zab算法;

clipboard.png

相關文章
相關標籤/搜索