什么是微服務,什么是分布式
本文寫于 2020 年 12 月 24 日
微服務
2014 年由 James Lewis 和 Martin Fowler 提出了完整的微服務概念,
微服務是一種 「架構風格」,該風格在開發應用時,將一個應用拆分成為一組小型服務,這些服務應該要圍繞著業務功能進行拆分,
每一個服務都擁有自己的行程,可以獨立的部署、升級,并且應該擁有自動化部署機制(太多服務了,部署起來會很麻煩),
服務之間應該是去中心化的,它們之間通過輕量的協議進行互動,通常使用 HTTP,
在不同的服務上,可以使用不同的語言、運用不同的儲存技術,比如我們撰寫一個購物網站,商品管理后臺用 PHP 在一個服務器寫、用戶管理后臺使用 Node.js 在另一個服務器撰寫、商品購買使用 Java 在第三個服務器撰寫……
而這就出現「分布式」,
分布式
不同的服務在不同的服務器上用著不同的語言撰寫,這些服務組成的就是分布式系統,
例如 A 服務,部署在了北京的 10 臺服務器上;B 服務部署在了武漢的 5 臺機器上;C 服務部署在了廣州的 3 臺機器上,
這時候就會出現幾個問題,
首先是遠程呼叫,
訂單服務想要呼叫購物車,購物車想要呼叫用戶,這就是遠程呼叫,
這一點我們可以使用 HTTP 協議解決問題,
其次是服務發現,
因為很可能多個機器部署了同一個服務,我們該如何去呼叫呢?
這就需要運用到 「負載均衡」 機制,負載均衡可以選擇鏈接最快的服務器進行連接,
第四是服務容錯,
在遠程呼叫程序中產生的錯誤除了代碼的錯誤,還可能是網路連接錯誤,我們該如何處理這些錯誤?
第五是配置管理,
當我們需要修改 A 服務的配置時,不可能將源代碼修改后部署到這十臺服務器上,這太麻煩了,
我們可以將所有的配置放置到統一的配置中心,修改配置時只需要重新部署配置中心就可以了,
第六是服務監控,
第七是鏈路追蹤,
第八是日志管理,
第九是任務調度,比如定時任務,
……
第一萬……
綜上所述,分布式系統雖然很方便,可是還存在諸多的問題,Spring Boot + Spring Cloud + Spring Cloud Data Flow 就是為了解決這些問題而生的,
(完)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/239987.html
標籤:其他
