分佈式系統和微服務的關係

 分佈式系統和微服務的關係

      一、分佈式系統 

      分佈式系統是由多臺計算機組成的系統,這些計算機通過網絡進行通信和協作,共同完成一個或多個共享目標。在分佈式系統中,各個計算機節點可以分佈在不同的地理位置,它們通過消息傳遞或共享存儲等方式進行通信。分佈式系統的設計目標包括提高性能、可靠性、可擴展性、容錯性等。

      二、微服務

      跟微服務架構與之相對的就是單體架構

      1. 單體架構

      通俗地講,“單體應用(monolith application)”就是將應用程序的所有功能都打包成一個獨立的單元,統一部署運行。

     

      

    單體應用有如下優點:

 

  • 開發簡單直接,集中式管理, 基本不會重複開發
  • 功能都在本地,沒有分佈式的管理開銷和調用開銷

 

    它的缺點也非常明顯,特別對於互聯網公司來說:

 

  • 開發效率低:所有的開發在一個項目改代碼,遞交代碼相互等待,代碼衝突不斷
  • 代碼維護難:代碼功能耦合在一起,新人不知道何從下手
  • 部署不靈活:構建時間長,任何小修改必須重新構建整個項目,這個過程往往很長
  • 穩定性不高:一個微不足道的小問題,可以導致整個應用掛掉
  • 擴展性不夠:無法滿足高併發情況下的業務需求

 

      2. 微服務架構

     隨着業務需求的快速發展變化,敏捷性、靈活性和可擴展性需求不斷增長,迫切需要一種更加快速高效的軟件交付方式。微服務就是一種可以滿足這種需求的軟件架構風格。單體應用被分解成多個更小的服務,每個服務有自己的歸檔文件,單獨部署,然後共同組成一個應用程序。這裏的“微”不是針對代碼行數而言,而是說服務的範圍限定到單個功能。

     

     

      微服務是一種軟件架構風格,將應用程序設計爲由一組小型、獨立的服務組成。每個服務都有自己的獨立部署、運行和擴展能力,通過輕量級的通信機制(通常是HTTP或消息隊列)進行協作。微服務架構旨在簡化大型應用程序的開發、部署和維護,提高系統的靈活性和可維護性。

      最簡單的情況下,本機運行多個容器,只用一臺服務器就實現了面向服務架構,這種實現方式就叫做微服務。

      微服務有如下優點:

 

  • 微服務是松藕合的,無論是在開發階段或部署階段都是獨立的。
  • 能夠快速響應, 局部修改容易, 一個服務出現問題不會影響整個應用。
  • 易於和第三方應用系統集成, 支持使用不同的語言開發, 允許你利用融合最新技術。
  • 每個微服務都很小,足夠內聚,足夠小,代碼容易理解。團隊能夠更關注自己的工作成果, 聚焦指定的業務功能或業務需求。
  • 開發簡單、開發效率提高,一個服務可能就是專一的只幹一件事, 能夠被小團隊單獨開發,這個小團隊可以是2-5人的開發人員組成。

 

    同樣的, 也存在如下缺點:

 

  • 微服務架構帶來過多的運維操作, 可能需要團隊具備一定的DevOps技巧。
  • 分佈式系統可能複雜難以管理。因爲分佈部署跟蹤問題難。當服務數量增加,管理複雜性增加。

 

      三、分佈式系統和微服務之間的關係

       1. 分佈式系統是一種架構範式

       分佈式系統是一種軟件架構的設計方式,用於解決多臺計算機協同工作的問題。微服務架構是在這種分佈式系統的背景下提出的一種服務組織方式。

       2. 微服務是一種實現方式  

       微服務是一種軟件架構風格,它可以在分佈式系統中應用。微服務架構將一個大型應用劃分爲一組小型、自治的服務,每個服務都有自己的業務邏輯,可以獨立開發、部署和運行。微服務通常運行在分佈式環境中,利用分佈式系統的特性。

       微服務是分佈式系統的一種形式: 微服務是分佈式系統的一種實現形式,它採用了分佈式的原則和理念。微服務通過將應用劃分爲小型服務並通過網絡進行通信,體現了分佈式系統的核心概念。

      四、總結

      總體而言,微服務架構可以視爲是在分佈式系統的基礎上演進而來的一種服務架構,它更強調服務的獨立性、自治性和松耦合,適用於構建靈活、可維護的大型應用系統。

      分佈式系統作爲一種更廣泛的概念,包括了各種架構和設計方式,而微服務是其中一種具體的實踐方式。 

     

      參考鏈接:https://cloud.tencent.com/developer/article/1877057

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章