2.1 微服務中的相關概念
2.1.1 服務註冊與發現
服務註冊:服務例項將自身服務資訊註冊到註冊中心。這部分服務資訊包括服務所在主機IP和提供服務的Port,以及暴露服務自身狀態以及訪問協議等資訊。
服務發現:服務例項請求註冊中心獲取所依賴服務資訊。服務例項通過註冊中心,獲取到註冊到其中的服務例項的資訊,通過這些資訊去請求它們提供的服務。
2.1.2 負載均衡
負載均衡是高可用網路基礎架構的關鍵元件,通常用於將工作負載分佈到多個伺服器來提高網站、應用、資料庫或其他服務的效能和可靠性。
2.1.3 熔斷
熔斷這一概念來源於電子工程中的斷路器(Circuit Breaker)。在網際網路系統中,當下遊服務因訪問壓力過大而響應變慢或失敗,上游服務為了保護系統整體的可用性,可以暫時切斷對下游服務的呼叫。這種犧牲區域性,保全整體的措施就叫做熔斷。
2.1.4 鏈路追蹤
隨著微服務架構的流行,服務按照不同的維度進行拆分,一次請求往往需要涉及到多個服務。網際網路應用構建在不同的軟體模組集上,這些軟體模組,有可能是由不同的團隊開發、可能使用不同的程式語言來實現、有可能布在了幾千臺伺服器,橫跨多個不同的資料中心。因此,就需要對一次請求涉及的多個服務鏈路進行日誌記錄,效能監控即鏈路追蹤
2.1.5 API閘道器
隨著微服務的不斷增多,不同的微服務一般會有不同的網路地址,而外部客戶端可能需要呼叫多個服務的介面才能完成一個業務需求,如果讓客戶端直接與各個微服務通訊可能出現:
客戶端需要呼叫不同的url地址,增加難度
再一定的場景下,存在跨域請求的問題
每個微服務都需要進行單獨的身份認證
針對這些問題,API閘道器順勢而生。
API閘道器直面意思是將所有API呼叫統一接入到API閘道器層,由閘道器層統一接入和輸出。一個閘道器的基本功能有:統一接入、安全防護、協議適配、流量管控、長短連結支援、容錯能力。有了閘道器之後,各個API服務提供團隊可以專注於自己的的業務邏輯處理,而API閘道器更專注於安全、流量、路由等問題。
2.2 SpringCloud的介紹
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。
2.3 SpringCloud的架構
2.3.1 SpringCloud中的核心元件
Spring Cloud的本質是在 Spring Boot 的基礎上,增加了一堆微服務相關的規範,並對應用上下文(Application Context)進行了功能增強。既然 Spring Cloud 是規範,那麼就需要去實現,目前Spring Cloud 規範已有 Spring官方,Spring Cloud Netflix,Spring Cloud Alibaba等實現。通過元件化的方式,Spring Cloud將這些實現整合到一起構成全家桶式的微服務技術棧。
Spring Cloud Netflix元件
2.3.2 SpringCloud的體系結構
從上圖可以看出Spring Cloud各個元件相互配合,合作支援了一套完整的微服務架構。
註冊中心負責服務的註冊與發現,很好將各服務連線起來
斷路器負責監控服務之間的呼叫情況,連續多次失敗進行熔斷保護。
API閘道器負責轉發所有對外的請求和服務
配置中心提供了統一的配置資訊管理服務,可以實時的通知各個服務獲取最新的配置資訊
鏈路追蹤技術可以將所有的請求資料記錄下來,方便我們進行後續分析
各個元件又提供了功能完善的dashboard監控平臺,可以方便的監控各元件的執行狀況
本作品採用《CC 協議》,轉載必須註明作者和本文連結