微服務(一):爲什麼需要微服務
微服務出現的原因
-
單體架構存在不足
業務越來越複雜,單體應用的代碼量越來越大,代碼的可讀性、可維護性、可拓展性下降,新人接手代碼所需的時間成倍增加,業務擴展帶來的代價極大。
單體應用的併發能力有限。
隔離性差,某部分出現問題時,整個工程都需要重新發布,故障影響範圍大
服務化出現
-
爲了解決,單體應用的問題,選擇將應用進行切分。相繼出現了SOA及微服務,下面列出Dubbo和spirngCloud的技術區別。
-
SOA和微服務的一個主要不同點就是自動化程度上的不同。大部分SOA實現只達到了服務級別的抽象,而微服務達到了對服務和運行環境的抽象級別。即SOA只是提供一個service層給其他服務調用,而微服務每個服務都是一個獨立的模塊,負責獨立的業務可獨立運行,並且在docker容器中運行。
-
微服務的幾個要點:1.微服務單元按業務劃分2.微服務通過HTTP來互相通信3.微服務的數據庫獨立4.微服務的自動部署5.服務集中化管理,即註冊中心6.分佈式架構7.熔斷機制
-
微服務的優勢
複雜的業務分解成若干小的業務,業務量變小,新人上手容易。
分佈式系統,服務於服務間無耦合,具有極強的擴展能力。
新開發的服務模塊可不侷限於某個技術、語言因爲模塊間相互獨立,只暴露接口。
重構難度降低,重構時只需要重構某個模塊。
隔離性強,某個服務出問題了,只需要測試和部署出問題的服務。
微服務在CAP理論中採用的是AP架構,即具備高可用和分區容錯性。
-
微服務的缺點
微服務的複雜度,構建一個微服務需要掌握更多的架構知識和框架知識,服務之間相互調用。
微服務一般是一個AP系統,要解決C必須要用到分佈式事務。
服務的劃分需要熟悉業務
服務的部署,一個大型應用有幾百個服務,一個服務有多個實例,每個服務啓動順序也有要求,部署有難度。