『壹』 SpringCloud入門簡述
微服務,是一個小型的服務,也是一種設計理念,將一個大型繁雜的系統拆分為多個小型的服務,進行獨立部署,這些服務在獨立進程中運行,通過特定的協議進行通信
優點:
缺點:
在服務通信性能上RPC更強,但是Rest更為靈活
SpringCloud是基於SpringBoot實現的微服務框架,為開發人員提供了很多快速構建分布式系統中常見模式的工具,包括配置管理、服務發現、斷路器、智能路由、微代理,控制匯流排等。
Spring Cloud專注於為典型的用例提供良好的開箱即用體驗,並為其他用例提供擴展性機制。
參考地址:
Eureka是Netflix開發的基於Rest的服務發現框架,SpringCloud基於此進行二次封裝,實現服務的管理。
創建一個Eureka服務:https://www.cnblogs.com/william-m/p/15991511.html
如果沒有Eureka,如何進行服務之間的調用?
使用Rest進行調用,先將RestTemplate注冊到Bean,然後:
Eureka遵循的是AP原則,Eureka各個節點都是平等的,部分服務節點的下線不會影響正常服務的調用,只要該服務還剩下一個節點在線就可以進行正常的服務訪問,即保證了服務可用,但是並不能保證查詢到的信息是最新的。Zookeeper的CP原則與之不同,Zookeeper會有一個master節點來保證一致性,一旦master節點掛掉,剩餘的節點會重新選舉一個leader,而選擇的過程需要時間,這期間會使得該服務癱瘓,所以需要滿足高可用的話該情況是不能夠容忍的。
Spring Cloud Ribbon是一個基於HTTP和TCP的 客戶端負載均衡 工具,基於Netflix Ribbon實現,通過輪詢、隨機等演算法選擇一個可用服務。
目的:將用戶的請求平攤的分配到多個服務上,實現高可用
最大區別:服務清單所存儲的位置
客戶端先發送請求到負載均衡伺服器,然後由負載均衡伺服器通過負載均衡演算法,在眾多可用的伺服器之中選擇一個來處理請求。
客戶端自己維護一個可用伺服器地址列表,在發送請求前先通過負載均衡演算法選擇一個將用來處理本次請求的伺服器,然後再直接將請求發送至該伺服器。
邏輯時序:RestTemplate發起請求 負載均衡器攔截器攔截 LoadBalanceClient獲取ILoadBalance 獲取服務列表 根據負載均衡器選擇一個server 發起請求 記錄調用信息
Ribbon基於HTTP和TCP客戶端的負載均衡器可以自己構建HTTP請求,使用RestTemplate發送服務
Feign基於Ribbon進行改進,採用介面的方式,將需要調用的服務的方法定義成抽象方法
Consumer應用
啟動類
為了調用Proct應用服務的介面類
Proct應用
controller
Hystrix是一個服務容錯與保護的組件,用於 服務降級 、 服務熔斷 、 服務限流 等等,能夠保證在其中一個服務出現問題的時候,不會出現級聯故障,防止雪崩,提高分布式服務的健壯性。
將某些服務停掉會i這不進行業務處理,釋放資源來維持主要服務的功能。
應對服務雪崩的一種保險措施,是微服務的鏈路保護機制,是服務降級的一種特殊處理方式。
為了應對某個服務故障的情況,保證系統的整體可用性,熔斷器會切斷對該服務的請求,返回一個比較友好的錯誤響應,直到服務恢復正常
熔斷機制的三種狀態:
示例:
熔斷:直接切斷服務的調用
降級:犧牲非核心業務保證核心服務的正常
限流:服務訪問量達到閾值後拒絕多餘的調用
Zuul是一個微服務網關。網關:是一個網路系統的前置入口。也就是說要想訪問一個有網關的網路系統請求相應的服務,需要先進入網關,然後路由到相應的服務。
通常是組成一個系統的微服務很多、或者有許可權要求時需要用到網關。
Zuul提供一個過濾器,父類為ZuulFilter,用來過濾代理請求,提供額外的功能邏輯(這點類似於AOP),包括前置過濾、路由後過濾、後置過濾、異常過濾。
ZuulFilter包含的抽象方法:filterType、filterOrder、shouldFilter、run
當微服務眾多的時候,想要管理各個服務的配置時過於繁雜,SpringCloud Config則可以用來對每個微服務的配置進行集中的管理。可以實現許可權管控、灰度發布、版本管理、格式檢驗、安全配置等。
作用:
特點:
文章來自https://www.cnblogs.com/william-m/p/16153557.html