根據 Gartner 對微服務的定義:“微服務是範圍狹窄、封裝緊密、鬆散耦合、可獨立部署且可獨立伸縮的應用程序組件。”
與將模塊高度耦合並部署爲一個大的應用程序相比,微服務的目標是將應用程序充分分解或者解耦爲鬆散耦合的許多微服務或者模塊,這樣做對下面幾點有很大幫助:
- 每個微服務都可以獨立於應用程序中的同級服務進行部署、升級、擴展、維護和重新啓動。
- 通過自治的跨職能團隊進行敏捷開發和敏捷部署。
- 運用技術時具備靈活性和可擴展性
在微服務架構中,我們根據各自的特定需求部署不同的松耦合服務,其中每個服務都有其更細粒度的 API 模型,用以服務於不同的客戶端(Web,移動和第三方 API)。
客戶端到微服務的連接
在考慮客戶端與每個已部署的微服務 直接通信 的問題時,應考慮以下挑戰:
- 如果微服務向客戶端公開了細粒度的 API,則客戶端應向每個微服務發出請求。在典型的單頁中,可能需要進行 多次服務器往返,才能滿足請求。對於較差的網絡條件下運行的設備(例如移動設備),這可能會更糟。
- 微服務中存在的 多種通信協議(例如 gRpc、thrift、REST、AMQP 等)使客戶端很難輕鬆採用所有這些協議。
- 必須在每個微服務中實現 通用網關功能(例如身份驗證、授權、日誌記錄)。
- 在不中斷客戶端連接的情況下,很難在微服務中進行更改。例如,在合併或劃分微服務時,可能需要重新編寫客戶端部分代碼。
原文鏈接:【https://www.infoq.cn/article/qXCl87G3fsIUbNVuLKOI】。未經作者許可,禁止轉載。