新手!什麼是分布式?

2021-09-24 04:10:18 字數 1420 閱讀 7902

這裡我結合我自己的理解對我學習分布式過程中遇到的疑問做乙個白話的表述,希望能讓新人快速的明白。

1.早期絕大分布程式都是執行在一台機器上的,找個機器指代所有計算裝置,伺服器,個人pc,手機等等等等,這裡就拿伺服器做例,當時這個伺服器a執行了乙個x軟體,這個x軟體需要進行乙個b運算(提供了乙個b功能,為xb),所有鏈結到這個a的客戶機(個人pc)都會要求xb運算,並且拿到這個xb運算的結果。早期沒有問題因為上網的人沒有那麼多,一切都很正常。

2.後來使用的人越來越多,隨著計算硬體的發展,那麼很自然的想到加大a的配置,這時也沒有問題,一切都很正常。

3.再後來使用的人更多了,突然發現增加配置雖然可以解決問題,但是**真的很貴,硬著頭皮加吧。

4.隨著dang機的次數變多,發現使用的人數不斷攀公升,加配置已經根本跟不上,錢也很緊張不是嗎。

5.有人提出將所有使用人的分批次,分配的不通的機器上去,分擔壓力,同時也要將服務拷貝到不同機器上去。就會是最簡單的方案,省錢也解決問題。

6.在這個過程中,發現分配到不通機器上的程式的狀態無法很好的掌握。那個機器是不是dang機,其中是不是機器網路不通了。為了解決這個問題,自然而然的想需要在這些機器之外,單獨存在乙個管理監控它們的工具,據此創造了乙個註冊中心的東西,他也是個程式,最簡單的目的就是知道這些在他眼皮地下的服務都是什麼個情況。

7.出現註冊中心後,那麼這些服務在啟動同時自然而然的要去告知這個註冊中心「我是乙個xb服務,我啟動了開始提供服務,你要監督我」

8.這樣以來,原本單個伺服器a承擔的工作就分擔給了多個伺服器去承擔,大量的使用者訪問按照路由邏輯路由到了多個機器上去(這裡我們不去討論路由規則之類的)。

9.後來需求變化了,需要在xb的基礎上,增加乙個c運算,並且這個c運算使用的人數很少很少。和axb運算並沒有很強的關聯性。為了這個c運算修改所有的ax是很不合適的,為了實現這個功能,將c運算單獨通過乙個新的y程式實現,並且為他單獨配置乙個機器a1,並且一道告訴註冊中心「我是y程式,提供c運算服務」。將雖有執行yc運算的請求路由a1這個機器。

10.。。。有人提出了xb運算要以yc運算的結果作為基礎進行再次計算,很自然的所有a機器(axb),在計算之前都要向a1機器上的請求yc運算服務。不知道什麼時候a1機器無法訪問了,xb運算等了很久也沒有結果,導致所有的axb運算也無法正常返回給使用者,歇逼了。這種情況一下需要乙個在a1yc運算無法正常返回時,axb運算要馬上能夠快速反應,熔斷器就這麼出現了。之後人們可以通過制定乙個時間,在超過這個時間後任然異常時,axb將會得到通知,並且立刻中止這一系列的計算,告訴使用者發生了什麼。

總結下本質上其實分布式並不是那麼的複雜,只是哪些術語讓他看上去很複雜。

對於新手細節上有很多問題,是需要碰到之後才能知道的,同時因為分布式本身的缺陷帶來了極大的不確定性,哪些框架的強大之處就在於在處理哪些不確定性的細節問題上遠遠比我們想的要更加周到。(例如axb如果呼叫a1yc更好,是rest還是prc,呼叫時應該採用什麼方式路由才能達到業務與效能的要求等等等)

什麼是分布式

1,什麼是分布式?任務分解 節點通訊 1 分布式和集群的關係?2 什麼是大型 訪問量 tps qps 資料量 儲存資料量 3 具體場景 第一版應用 第二版 單擊負載越來越高,資料庫伺服器和應用伺服器分離 第三版 應用伺服器做集群 cookie 儲存的是jsessionid concurrentmap...

什麼是分布式

1,什麼是分布式?任務分解 節點通訊 1 分布式和集群的關係?2 什麼是大型 訪問量 tps qps 資料量 儲存資料量 3 具體場景 第一版應用 第二版 單擊負載越來越高,資料庫伺服器和應用伺服器分離 第三版 應用伺服器做集群 cookie 儲存的是jsessionid concurrentmap...

什麼是分布式系統

一 什麼是分布式系統?1.所謂分布式,就是將乙個軟體或者是系統,看成乙個整體 不管多複雜 2.然後將這個整體拆分成若干個progress,每乙個progress都具備一定的功能 3.最後通過不同的協議,使每個progress都能夠互相通訊,連線起來。這個系統就是分布式系統。二 為什麼要這樣做?也就是...