分布式 - 分布式系统的特点
20世紀(jì)60年代,IBM研發(fā)了System 360架構(gòu)大型機(jī),與同時(shí)期的波音707、福特汽車譽(yù)為商業(yè)三大成就,憑借其卓越的性能和良好的穩(wěn)定性,開啟了大型機(jī)的時(shí)代,誕生了非常多的集中式系統(tǒng),采用單機(jī)架構(gòu),有非常好的單機(jī)處理能力。
然而,大型機(jī)的高性能也伴隨著高成本,包括購買成本和運(yùn)維成本,對運(yùn)維人員的要求非常之高,需要掌握大型機(jī)緊密設(shè)計(jì)的技術(shù)細(xì)節(jié)。
并且購買成本也是極其昂貴,起步幾百萬刀,甚至更高,只有政府和金融等機(jī)構(gòu)才有能力采購。
另一個(gè)問題,是當(dāng)今大家都比較關(guān)注的單點(diǎn)故障,大型機(jī)設(shè)計(jì)在精良,也不代表它永不宕機(jī),而一臺大型機(jī)上面往往安裝一個(gè)甚至多個(gè)重要的系統(tǒng),一旦宕機(jī),后果很嚴(yán)重。
美國國防部認(rèn)為,如果僅有一個(gè)集中的軍事指揮中心,萬一被摧毀,全國軍事指揮將處于癱瘓狀態(tài),因此,設(shè)計(jì)一個(gè)分散的,網(wǎng)絡(luò)化的指揮通信系統(tǒng)十分有必要,1969年組建了第一個(gè)分組交換實(shí)驗(yàn)網(wǎng)ARPANET,1980年,TCP/IP(Transmission Control Protocol/Internet Protocol)研制成功,從此,奠定了分布式系統(tǒng)的基石 -- 網(wǎng)絡(luò)和通信協(xié)議!
看起來,分布式最早出現(xiàn)的目地首先是解決單點(diǎn)問題,避免單點(diǎn)故障,然后解決了性能問題。
隨著PC機(jī)性能的提升和普及,很多企業(yè)開始嘗試將系統(tǒng)運(yùn)行在PC服務(wù)器上,搭建基于分布式架構(gòu)的系統(tǒng),系統(tǒng)之間通過網(wǎng)絡(luò)連接和通信,分布式系統(tǒng)嚴(yán)重依賴于網(wǎng)絡(luò)。
一句話總結(jié)單機(jī)集中式系統(tǒng)和分布式系統(tǒng)的核心差異:單機(jī)系統(tǒng)運(yùn)行于一臺計(jì)算機(jī)上,而分布式系統(tǒng)是運(yùn)行于網(wǎng)絡(luò)之上!
而在前幾年,Hadoop生態(tài)倡導(dǎo)基于普通PC構(gòu)建大型分布式計(jì)算系統(tǒng),并大獲成功,加速了分布式架構(gòu)快速普及和應(yīng)用。
分布式的特點(diǎn)
分布式系統(tǒng)是一個(gè)各組件分布在不同計(jì)算機(jī)上,彼此通過網(wǎng)絡(luò)通信和協(xié)調(diào)的系統(tǒng)。
這是來自《分布式系統(tǒng)概念與設(shè)計(jì)》一書中的定義,我給簡化了一下,但核心就是上面提到的,分布式,顧名思義,系統(tǒng)的特定部分是分布在不同的計(jì)算機(jī)上,甚至是完全不在一個(gè)機(jī)房,或者一個(gè)地區(qū)的計(jì)算機(jī)上,各部分通過網(wǎng)絡(luò)通信,使得整體看起來還是一個(gè)系統(tǒng),對用戶透明。
資源冗余
網(wǎng)絡(luò)中的計(jì)算機(jī)本身都是對等的,沒有主從之分,但是,分布式系統(tǒng)為了本身的健壯和可靠性考慮,會設(shè)計(jì)一些冗余來化解分布式系統(tǒng)本身存在的一些必然性。
冗余包括數(shù)據(jù)的冗余和服務(wù)的冗余,數(shù)據(jù)通常會有一主和多個(gè)副本,主數(shù)據(jù)丟失,系統(tǒng)會讀取副本數(shù)據(jù),繼續(xù)對外提供服務(wù);
而服務(wù)的冗余是同樣一個(gè)服務(wù),會運(yùn)行在多個(gè)計(jì)算機(jī)節(jié)點(diǎn)上,每一個(gè)服務(wù)都有能力對外提供完整或部分服務(wù)。
并發(fā)問題
如上所述,一個(gè)系統(tǒng)服務(wù)可能存在多個(gè)運(yùn)行實(shí)例,由于是同時(shí)運(yùn)行,就可能會并發(fā)的操作一些共享資源,諸如數(shù)據(jù)庫,分布式文件系統(tǒng)等,如何準(zhǔn)確高效的協(xié)調(diào)并發(fā)操作,避免阻塞,保證一致性,是分布式架構(gòu)設(shè)計(jì)中最大的挑戰(zhàn)之一!
全局時(shí)鐘
請參考論文:《Time and clocks and ordering of events in a distributed system》或者?time-and-clocks-and-ordering-of-events-in-a-distributed-system
,深刻的剖析了分布式系統(tǒng)多節(jié)點(diǎn)之間缺乏全局時(shí)鐘序列控制的問題,如何保證事件發(fā)生的精確的先后順序。
環(huán)境問題
分布式系統(tǒng)的優(yōu)勢是網(wǎng)絡(luò)化,為系統(tǒng)的擴(kuò)展提供了可能性,然而,分布式最大的問題也是網(wǎng)絡(luò)化帶來的各種不確定因素,從工業(yè)的角度來說,網(wǎng)絡(luò)問題是分布式系統(tǒng)的原罪,給分布式系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)都帶來了極大的難題和挑戰(zhàn)。
網(wǎng)絡(luò)的不可靠性
假如CPU一次計(jì)算需要1s,那么,一次從舊金山到紐約的網(wǎng)絡(luò)請求,大約需要5年,到香港需要11年
所以,網(wǎng)絡(luò)的倆個(gè)問題,1,不能保證信息的完整性和必達(dá)性,存在數(shù)據(jù)丟包的問題;2,延遲,在整個(gè)系統(tǒng)當(dāng)中,網(wǎng)絡(luò)延遲是最耗時(shí)的部分,各部分性能對比請參考:Computer Latency at a Human Scale。
網(wǎng)絡(luò)分區(qū)
當(dāng)網(wǎng)絡(luò)通信出現(xiàn)異常,導(dǎo)致分布式系統(tǒng)中部分節(jié)點(diǎn)之間的網(wǎng)絡(luò)延時(shí)不斷增大,最終,只有部分節(jié)點(diǎn)之間的通信是正常的,整個(gè)分布式系統(tǒng)變成幾個(gè)小組,這個(gè)現(xiàn)象稱為網(wǎng)絡(luò)分區(qū),也會形成腦裂。
因此,分布式系統(tǒng)被強(qiáng)行分為幾個(gè)局部的小集群,并且都會按照一致性算法選舉出自己的master,這個(gè)有點(diǎn)像戰(zhàn)國時(shí)期的中國,這就是網(wǎng)絡(luò)分區(qū),也是腦裂。
可怕的是,每個(gè)小集群都可以正常對外服務(wù),出現(xiàn)數(shù)據(jù)嚴(yán)重不一致的情況,因此,網(wǎng)絡(luò)分區(qū),數(shù)據(jù)一致性,再加上可用性(就是出現(xiàn)前面兩種情況你怎么辦?),被稱為傳說中的CAP定理,
CAP
這些情況對分布式系統(tǒng)的設(shè)計(jì),工程實(shí)踐提出了非常大的挑戰(zhàn)。
三態(tài)
在集中式的系統(tǒng)中,模塊之間的調(diào)用狀態(tài)只有倆種狀態(tài),就是成功和失敗,而在分布式系統(tǒng)中,模塊之間可能是通過網(wǎng)絡(luò)通信的,所以就多了一種超時(shí)的狀態(tài)。
超時(shí)狀態(tài)通常會出現(xiàn)在一下倆種情況:
由于網(wǎng)絡(luò)原因,請求并沒有被成功的發(fā)送到接收方,在過程中丟失;
請求被成功的發(fā)送到接收方,并進(jìn)行了處理,但是,接收方在響應(yīng)給發(fā)送方的過程中,數(shù)據(jù)丟失了,發(fā)送方?jīng)]有收到反饋。
因此,成功、失敗、超時(shí)是分布式系統(tǒng)通信的三種狀態(tài),稱為三態(tài)。
節(jié)點(diǎn)故障
節(jié)點(diǎn)故障是分布式系統(tǒng)中另一個(gè)很常見的問題,指的是分布式組成的節(jié)點(diǎn)當(dāng)中,有的節(jié)點(diǎn)因?yàn)殄礄C(jī)、或者進(jìn)程退出,出現(xiàn)的節(jié)點(diǎn)故障。
根據(jù)經(jīng)驗(yàn),每個(gè)節(jié)點(diǎn)都有可能出現(xiàn)故障,并且每天都有可能發(fā)生,所以,分布式設(shè)計(jì),除了要考慮網(wǎng)絡(luò)問題,另一個(gè)重要的考慮因素是節(jié)點(diǎn)故障。
小結(jié)
本文主要討論了一下集中式系統(tǒng)的過去,和分布式系統(tǒng)盛行的當(dāng)下和緣由,以及分布式系統(tǒng)的特點(diǎn)、困境,后面會繼續(xù)出一些關(guān)于分布式系統(tǒng)的相關(guān)內(nèi)容,討論分布式系統(tǒng)的方方面面。
原文地址:https://www.cnblogs.com/xguo/p/10878615.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的分布式 - 分布式系统的特点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软拥抱开源,Win10为啥要引入真Li
- 下一篇: 黑科技抢先尝(续2) - Windows