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