微服務與分佈式的聯繫

最近學習了分佈式與微服務的相關知識,因爲本人也是初步接觸沒什麼實際的經驗最初也是被一大堆概念搞的雲裏霧裏。 這兩天便好好看書,上網查資料,對這二者總結了一番,但願可以給正在學習的你們解決一些疑惑。數據庫

先說說分佈式,分佈式只是一種手段,把不一樣的機器分散在不一樣的地方,而後這些機器間相互協助完成業務。微服務是一種特殊的分佈式緩存

因此咱們應該比較的是傳統單體應用與微服務的區別。
先看看傳統單體應用,下面看一張圖
圖片描述服務器

這就是一個大型網站的架構圖,我說說這個圖產生的步驟,詳細可看李智慧的大型網站架構一書。網絡

  1. 最開始一臺服務器上存儲着文件,數據,應用程序。隨着流量的增多,瓶頸出現,應用程序須要更快CPU,數據庫服務器要更大內存(緩存)和硬盤,文件服務器要更大硬盤,便將三個功能分離到各自服務器。架構

  2. 爲了提升速度,將經常使用數據放到緩存中,緩存又分本地緩存和分佈式緩存。負載均衡

  3. 緩解服務器壓力,採用集羣,並經過負載均衡服務器調度不一樣的應用服務器。分佈式

  4. 除了緩存外仍有大量數據直接訪問數據庫服務器,這時便採用讀寫分離。微服務

  5. 使用CDN,反向代理加速網站響應,CDN可從距離本身最近的網絡提供商機房獲取數據,若是反響代理中緩存着用戶請求的資源則直接返回給用戶。學習

  6. 分佈式數據庫,是數據庫拆分的最後手段,按照不一樣業務拆分網站

  7. 業務愈來愈複雜採用分佈式服務,傳統的SOA架構。

clipboard.png

因爲服務愈來愈多ESB服務總線維護起來愈來愈麻煩,微服務便由此發展而來!


微服務

因爲業務間的邏輯愈來愈複雜,咱們就不把這些業務所有雜糅在一塊兒,每一個業務都分開來作,這就是微服務。

優勢:上面的單體系統所有運行於一個進程以內,資源相互影響,添加功能可能會影響其它功能,致使維護麻煩。 而微服務一切分爲不一樣的模塊,運行於自身進程內,並且不一樣的服務可使用不一樣的語言充分發揮優點。

缺點:引入了分佈式的複雜性,如接口一致性。 不過不少問題強大的Spring Cloud都已經提供瞭解決方案!

下面給出一張Sping Cloud的組件架構圖

clipboard.png

未完。。。。

相關文章
相關標籤/搜索