天天看點

到底為什麼要用分布式

近年來分布式架構火遍了大江南北,自己也去學習了一些諸如dubbo,springcloud之類的分布式架構,可是學了之後不由得就會問自己一個問題,為什麼非得用這個東西啊?

看了一些部落格文章,總結了下,分布式架構其實是偏向于,大型網站,高并發,高QPS的情況。對于一些通路量較小的應用和網站,考慮到項目成本,其實沒有必要強行分布式。是以技術選型要根據實際情況,靈活開發的大環境下,炫技什麼的沒有意義。

但這并不影響我學習分布式的熱情。

那我們先看一下傳統單節點應用的優缺點吧

優點:

1.開發簡單:你開發需要調用的接口,查的表,都可以在你這一套應用中找到,即使是跨業務子產品,也沒關系,因為其他業務的代碼你是看得到的,對你而言是透明的。

2.測試簡單:

3.部署簡單:

測試和部署一起說,其實就是一句話,單個應用,一個包,甚至說一個庫,相當于一整個生态都在你手中,與外系統互動少,兩個字:可控。

缺點:

1.項目臃腫,維護成本高,業務代碼犬牙交錯,不易定位bug,即使定位到bug,也有可能解決了舊bug,引發了新bug。

2.資源無法隔離,共享一個資料庫,或者一塊記憶體,一旦某個功能出現故障,很可能導緻整個系統性能下降甚至不可用 --這是最不能忍的

3.無法靈活擴充。我相信你又要說了,單體應用也可以叢集部署啊,咋不能擴充啦。那我問你,如果我隻是某一個功能子產品出現瓶頸,你告訴我要整個系統水準擴充,這靈活嗎?成本是不是太高了?

4.傳遞周期長,單個應用你是不是要等所有的功能開發測試完成一起上線傳遞?這樣風險太大,任何一個環節出了問題,都有可能拖慢傳遞周期。

那麼分布式架構的優點就不言而喻了吧,分布式就是為了解決這些問題的。

我們重點關注的應該是他的缺點:

1.性能,分布式系統是跨程序,跨網絡的,受帶寬和網絡延遲的影響

2.還是對于網絡的依賴,任何一次遠端調用都可能會失敗,故障點會更多。

3.引入各種中間件,異步操作,增加了功能實作的複雜度

4.需要在C(一緻性) A(可用性)P(分區容錯性)中做出取舍

5.運維成本變高,每個獨立的應用都要部署,日志,監控

什麼是架構?兩個字,取舍。

繼續閱讀