1、分佈式系統定義服務器
分佈式系統是一個硬件或軟件組件分佈在不一樣的網絡計算機上,彼此之間僅僅經過消息傳遞進行通訊和協調的系統。網絡
2、特性架構
一、副本(Replica)是分佈式系統最多見的概念之一,指分佈式系統對數據和服務提供的一種冗餘方式。在常見的分佈式系統中,爲了對外提供高可用的服務,咱們每每會對數據和服務進行副本處理。併發
1)數據副本指在不一樣節點上持久同一份數據,當某一個節點上存儲的數據丟失時,能夠從副本上讀取到該數據,這是解決分佈式系統數據丟失問題的有效手段。分佈式
2)服務副本指多個節點提供一樣的服務,每一個節點都有能力接受來自外部的請求並進行相應的處理。spa
二、併發性設計
在程序運行過程當中的併發性操做是很是常見的行爲,例如同一個分佈式系統中的多個節點,可能會併發地操做一些共享的資源,如何準確並高效的協調分佈式併發操做也成爲了分佈式系統架構與設計中最大的挑戰之一。進程
三、全局時鐘事件
分佈式系統是有一系列在空間上隨意分佈的多個進程組成的,在這些進程之間經過交換消息來進行相互通訊。所以,在分佈式系統中,很難定義兩個事件究竟誰先誰後,緣由就是分佈式系統缺少一個全局的時鐘序列控制。事務
四、故障總會發生
任何在設計階段考慮到的異常狀況,必定會在系統實際運行中發生,而且,在系統實際運行過程當中還會遇到不少在設計時未能考慮到的異常故障。因此,除非需求指標容許,在系統設計時不能放過任何異常狀況。
3、分佈式環境的各類問題
一、通訊異常
網絡自己的不可靠性,各節點之間的網絡通訊可以正常進行,其延時也會遠大於單機操做。單機內存訪問的延時在納秒數量級(一般是10ns左右),而正常的一次網絡通訊的延遲在0.1~1ms左右,巨大的延時差異,會影響消息的收發的過程,所以消息丟失和消息延遲變得很是廣泛。
二、網絡分區
當網絡因爲發生異常狀況,致使分佈式系統中部分節點之間的網絡延時不斷增大,最終致使組成分佈式系統的左右節點中,只有部分節點可以進行正常通訊,而另外一些節點則不能,這個現象成爲網絡分區,俗稱「鬧裂」。當網絡分區出現時,分佈式系統就出現局部小集羣,在極端狀況下,這些小集羣會獨立完成本來須要整個分佈式系統才能完成的功能,包括對數據的事務處理,這對分佈式一致性提出了很是大的挑戰。
三、三態
在分佈式環境下,網絡可能出現各式各樣的問題,所以分佈式系統的每一次請求與響應,存在特有的三態概念,即成功、失敗與超時。超時現象一般有一下兩種狀況:
1)因爲網絡緣由,該請求(消息)並無被成功發送到接收方,而是在發送過程就發生了消息丟失現象。
2)該請求(消息)成功的被接收方接受後,並進行了處理,可是在將響應反饋給發送方的過程當中,發生了消息丟失現象。
當出現這樣的超時現象時,網絡通訊的發起方是沒法肯定當前請求是否被成功處理的。
四、節點故障
分佈式系統下比較常見的問題,指組成分佈式系統的服務器節點出現宕機或僵死現象。