一、什么是微服務
所謂微服務是SOA架構下的最終產物,該架構設計目標是為了肢解服務,使得服務能夠獨立運行。
微服務可以按照業務划分,將一組特定的業務划分成一個服務,每個服務都有自己獨立的數據庫,獨立部署,服務直接通過 REST API 進行通訊。每一個獨立運行的服務組成整個系統。
總結下,微服務就是,由單一應用程序構成的小服務,擁有自己的進程與輕量化處理,服務依業務功能設計,以全自動的方式部署,與其他服務使用 HTTP API 通訊。同時,服務會使用最小規模的集中管理(例如 Docker )技術,服務可以用不同的編程語言與數據庫等。微服務架構是將復雜臃腫的單體應用進行細粒度的服務化拆分,每個拆分出來的服務各自獨立打包部署,並交由小團隊進行開發和運維,從而極大地提高了應用交付的效率
微服務設計的原則:
- 各司其職
- 服務高可用和可擴展性
二、微服務與單體應用區別
- 單體應用:傳統架構。集所有功能於一身構建一個項目,不可分開部署。
- 單體架構所有的模塊全都耦合在一塊,代碼量大,維護困難,而微服務每個模塊就相當於一個單獨的項目,代碼量明顯減少,遇到問題也相對來說比較好解決。
- 單體架構所有的模塊都共用一個數據庫,存儲方式比較單一,微服務每個模塊都可以使用不同的存儲方式(比如有的用 redis ,有的用 mysql 等),數據庫也是單個模塊對應自己的數據庫。
- 單體架構所有的模塊開發所使用的技術一樣,微服務每個模塊都可以使用不同的開發技術,開發模式更靈活。
- 單體應用是將所有功能模塊放在一個單一進程中,並且通過在不同的服務器上面復制這個單體進行擴展。
三、微服務的好處
- 微服務應用的一個最大的優點是,它們往往比傳統的應用程序更有效地利用計算資源。這是因為它們通過擴展組件來處理性能瓶頸問題。這樣一來,開發人員只需要為額外的組件部署計算資源,而不需要部署一個完整的應用程序的全新迭代。最終的結果是有更多的資源可以提供給其它任務。
- 微服務應用程序的另一個好處是,它們更快且更容易更新。當開發者對一個傳統的單體應用程序進行變更時,他們必須做詳細的 QA 測試,以確保變更不會影響其他特性或功能。但有了微服務,開發者可以更新應用程序的單個組件,而不會影響其他的部分。測試微服務應用程序仍然是必需的,但它更容易識別和隔離問題,從而加快開發速度並支持 DevOps 和持續應用程序開發。
- 第三個好處是,微服務架構有助於新興的雲服務,如事件驅動計算。類似 AWS Lambda 這樣的功能讓開發人員能夠編寫代碼處於休眠狀態,直到應用程序事件觸發。事件處理時才需要使用計算資源,而企業只需要為每次事件,而不是固定數目的計算實例支付。
通俗點解釋是:
- 易於開發和維護:因為一個服務只關注一個特定的業務,業務就變得比較清晰。同時維護起來也是比較方便。
- 單個服務啟動比較快:單個服務代碼量不會很多,啟動起來就會很快。
- 便於伸縮:如果系統中有三個服務 ABC ,服務 B 的訪問量比較大,我們可以將服務 B 集群部署。
單體應用中,如果需要改動功能,那么則需要重新部署整個單體應用。而微服務則不需要,只需要重新部署修改的功能模塊那個微服務。每一個功能模塊都可替換和獨立維護的軟件單元,完全體現了高可復用性,高可維護性,高可擴展性。
<完>