分布式精华问答 | 分布式与集群的区别是什么?
什么是分布式計算?所謂分布式計算是一門計算機科學,它研究如何把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然后把這些部分分配給許多計算機進行處理,最后把這些計算結(jié)果綜合起來得到最終的結(jié)果。
1
Q:什么是分布式緩存?
A:為了提高性能和響應時間,在應用程序(通常是Web應用程序)中“部署”并確保數(shù)據(jù)從內(nèi)存加載而不是從磁盤加載(速度更慢)的解決方案。
如果要在單臺機器上使用高速緩存,那么看起來很簡單 - 只需從內(nèi)存中的數(shù)據(jù)庫中加載最活躍的數(shù)據(jù)(例如Guava Cache實例),然后從中提供。當必須在集群中工作時,它變得有點復雜 - 例如5個應用節(jié)點以循環(huán)方式向用戶提供請求。
Q:如何實現(xiàn)分布式系統(tǒng)的高可用性?
A:高可用性的前提是:保證服務系統(tǒng)能夠持續(xù)工作,實現(xiàn)高可用性一般有兩種手段: 一種是通過第三方軟件/組件保證系統(tǒng)的可用性;另一種是軟件/組件自身己具備高可用的技術(shù)實現(xiàn)。
Q:分布式系統(tǒng)的優(yōu)勢
A:分布式可繁也可以簡,最簡單的分布式就是大家最常用的,在負載均衡服務器后加一堆web服務器,然后在上面搞一個緩存服務器來保存臨時狀態(tài),后面共享一個數(shù)據(jù)庫,其實很多號稱分布式專家的人也就停留于此,大致結(jié)構(gòu)如下圖所示:
?
Q:分布式與集群的區(qū)別是什么?
A:分布式:一個任務分給多臺機器去做,減少單個任務的執(zhí)行時間。
集群:提高單位時間內(nèi)執(zhí)行任務數(shù)。
例如:一個任務由10個子任務組成,每個子任務單獨執(zhí)行需要1個小時,則在一臺服務器上執(zhí)行該任務需要10個小時。
分布式方案:提供10臺服務器,每臺服務器只處理一個子任務,不考慮任務間的依賴關(guān)系,執(zhí)行完這個任務只需要一個小時。
集群方案:同樣提供10臺服務器,每臺服務器都能獨立處理這個任務。假設(shè)有10個任務同時到達,10個服務器將同時工作,10小時后,10個任務同時完成,同樣是一個小時完成一個任務。
5
Q:分布式系統(tǒng)面臨的挑戰(zhàn)
A:分布式系統(tǒng)需要大量機器協(xié)作,面臨諸多的挑戰(zhàn):
第一,異構(gòu)的機器與網(wǎng)絡(luò):
分布式系統(tǒng)中的機器,配置不一樣,其上運行的服務也可能由不同的語言、架構(gòu)實現(xiàn),因此處理能力也不一樣;節(jié)點間通過網(wǎng)絡(luò)連接,而不同網(wǎng)絡(luò)運營商提供的網(wǎng)絡(luò)的帶寬、延時、丟包率又不一樣。怎么保證大家齊頭并進,共同完成目標,這四個不小的挑戰(zhàn)。
第二,普遍的節(jié)點故障:
雖然單個節(jié)點的故障概率較低,但節(jié)點數(shù)目達到一定規(guī)模,出故障的概率就變高了。分布式系統(tǒng)需要保證故障發(fā)生的時候,系統(tǒng)仍然是可用的,這就需要監(jiān)控節(jié)點的狀態(tài),在節(jié)點故障的情況下將該節(jié)點負責的計算、存儲任務轉(zhuǎn)移到其他節(jié)點
第三,不可靠的網(wǎng)絡(luò):
節(jié)點間通過網(wǎng)絡(luò)通信,而網(wǎng)絡(luò)是不可靠的。可能的網(wǎng)絡(luò)問題包括:網(wǎng)絡(luò)分割、延時、丟包、亂序。相比單機過程調(diào)用,網(wǎng)絡(luò)通信最讓人頭疼的是超時:節(jié)點A向節(jié)點B發(fā)出請求,在約定的時間內(nèi)沒有收到節(jié)點B的響應,那么B是否處理了請求,這個是不確定的,這個不確定會帶來諸多問題,最簡單的,是否要重試請求,節(jié)點B會不會多次處理同一個請求。
總而言之,分布式的挑戰(zhàn)來自不確定性,不確定計算機什么時候crash、斷電,不確定磁盤什么時候損壞,不確定每次網(wǎng)絡(luò)通信要延遲多久,也不確定通信對端是否處理了發(fā)送的消息。而分布式的規(guī)模放大了這個不確定性,不確定性是令人討厭的,所以有諸多的分布式理論、協(xié)議來保證在這種不確定性的情況下,系統(tǒng)還能繼續(xù)正常工作。
小伙伴們沖鴨,后臺留言區(qū)等著你!
關(guān)于分布式,今天你學到了什么?還有哪些不懂的?除此還對哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……
同時歡迎大家搜集更多問題,投稿給我們!風里雨里留言區(qū)里等你~
福利
1、掃描添加小編微信,備注“姓名+公司職位”,加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習!
推薦閱讀:
同樣是消息隊列,Kafka憑什么速度那么快?
蘋果宣布加入CNCF;華為要求美國運營商支付專利費;微軟刪除最大的公開人臉識別數(shù)據(jù)集
如何給老婆解釋什么是微服務?
任正非:華為 100% 沒有后門
阿里巴巴楊群:高并發(fā)場景下Python的性能挑戰(zhàn)
那些去德國的程序員后來怎么樣了?
新技術(shù)“紅”不過十年,半監(jiān)督學習為什么是個例外?
獨家對話V神! 質(zhì)疑之下的以太坊路在何方?
真香,朕在看了!
總結(jié)
以上是生活随笔為你收集整理的分布式精华问答 | 分布式与集群的区别是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2O19款宵克轮胎更换不一致可以吗?
- 下一篇: Boost::context模块call