磨刀不誤砍柴工,看下這個再來學習分佈式架構

大家一聽分佈式架構,一般第一反應都是,高端霸氣上檔次。其實,分佈式架構在我們平時的開發很常見,也並非那麼複雜,今天我們用大白話來講講什麼是分佈式架構。

磨刀不誤砍柴工,看下這個再來學習分佈式架構

背景

首先我們要知道,分模塊並不是分佈式的概念,早在上世紀90年代,就有人提出了按照模塊劃分軟件功能,之間相互依賴,但是他們仍然部署在相同的機器上。隨著軟件的發展尤其是互聯網的發展,傳統的單體架構越來越不行了,主要表現為3方面的問題:

1.性能問題,單體架構很難提升性能,很容易因為某一模塊的性能瓶頸而照成整個大應用的性能下降。

2.難以擴展,難以擴展,原來的各個模塊依賴非常密切,就寫一些精度的機器裡面,有成千上萬個齒輪,每一個模塊的變動都會帶動其他齒輪的轉動。

3.系統可用性低,想想,因為模塊之間的緊密聯繫,就像齒輪一樣,所以一旦一個齒輪發生損壞,就會造成整個系統崩潰。

磨刀不誤砍柴工,看下這個再來學習分佈式架構

優缺點

磨刀不誤砍柴工,看下這個再來學習分佈式架構

相對於傳統的單體結構,分佈式的最重要的有點有下面幾點:

1.容易開發跟實現新功能,與傳統的單體結構相比,開發或者變更一個新功能,我們只要跟外部系統約定好接口與協議,內部實現不會對其他功能造成影響。

2.單點故障影響範圍更小,分佈式不會像傳統單體架構一樣,一個模塊的故障造成全部不可用。當然,分佈式也會有故障問題,這就需要優秀的架構師設置合理合適的框架,規避單點故障帶來的大面積故障。

3.系統吞吐量大,對於有性能瓶頸的模塊,我們可以採用異步或者部署更多的機器,解決單機性能瓶頸的問題又提高了機器的利用率。

分佈式雖然解決了很多難題,難也是有不少缺點的,所以需要各位程序員,各位架構師進行攻克與架構。

主要難點

1.異構系統不標準,這個主要體現在通訊協議不標準、數據結構不標準、部署環境不標準等等等,每個系統都可能有自己的數據結構跟通訊協議,可能有人喜歡用Http,有人是自己的Socket,而且協議體、錯誤代碼、錯誤信息等數據結構都可能不一致,這不僅給開發帶來不便,還給統一監控跟治理帶來不少麻煩。

2.故障概率更大,因為機器數量變多,維護開發的人變多,單機故障的概率反而會大於單機結構。這是必然的現象,一個沒有處理過故障的工程師不是一個好碼農。這就需要我們設計合理的分佈式架構,降低故障的概率跟影響面,同時也要自動化運維,畢竟人總是會犯錯的,而且經常犯。

3.服務依賴問題,不要以為一臺機器掛了整個程序就掛了只有在單體架構才會發生,在分佈式的環境中,也會存在一些關鍵服務,一旦掛掉,往往會行程多米諾效應,造成雪崩。

怎麼做

為了解決分佈式帶來的問題,就需要各個程序員跟架構師大展身手了,無論是什麼辦法,無外乎為了下面兩個事情:1是提高系統吞吐,2是提高系統的可用性。由此派生出來非常多的分佈式技術跟框架,歡迎大家關注我,後面我會針對分佈式的相關技術進行分享,一同學習進步!

磨刀不誤砍柴工,看下這個再來學習分佈式架構


分享到:


相關文章: