意義
將單體應用拆分為一組小服務,協同工作,小而自治,每個服務在獨立的程式執行,服務之間使用輕量級的通訊機制RPC。
單一職責,一個微服務解決一個業務問題,注意是一個業務問題而不是一個介面,服務圍繞業務構建,服務可以獨立部署,低耦合。
面向服務,將自己的業務能力封裝並對外提供服務,一個微服務本身也可以有使用到其它微服務的能力,服務之間互不影響,複用性高,且有自動部署機制。
可以根據業務特殊性使用不同的程式語言和資料儲存,實現異構型和去中心化。
易於開發,每個模組是一個服務,每個服務是一個專案,開發一個模組就只需要擔心這個模組的邏輯即可,低耦合。
技術棧不受限,不同的微服務之間的程式語言編寫,只需要關注邏輯即可,不需要關心實現過程,程式語言不限。
啟動較快,相比於啟動單體架構的整個專案,獨立部署的微服務啟動速度快。
修改容易,在開發中發現一個問題,如果是單體架構的話,需要重新發布並啟動整個專案,耗時間。但是微服務開發,模組出現bug只需要解決模組的bug就可以了,解決完bug之後,重啟模組的服務即可,不必重啟整個專案,節約時間。
微服務與分散式
共同點:
將模組拆分成一個獨立的服務單元透過介面來實現資料的互動。
為了不因為某個模組的升級和BUG影響現有的系統業務。
細微差別:
微服務是分散式架構,但微服務的應用不一定是分散在多個伺服器上,可能是同一個伺服器。
本作品採用《CC 協議》,轉載必須註明作者和本文連結