Spring Cloud 新一代Web框架微服務翹楚
序言
springcloud是微服務架構的集大成者,將一系列優秀的元件進行了整合。基於springboot構建,對我們熟悉spring的程式設計師來說,上手比較容易。
通過一些簡單的註解,我們就可以快速的在應用中配置一下常用模組並構建龐大的分散式系統。
下面主要用圖來理解下各個元件的概念吧
都有哪些優秀元件
被我搞綠的,是比較常用的元件!!
那麼本篇也簡單介紹下被我搞綠的,我沒搞的,你們找度娘搞吧。
Eureka:全球(美國)/jʊ'rikə/
功能:服務註冊與發現,各個服務啟動時,Eureka Client都會將服務註冊到Eureka Server,並且Eureka Client還可以反過來從Eureka Server拉取登錄檔,從而知道其他服務在哪裡
Ribbon: 全球(美國)/'rɪbən/
n. [動力] 渦輪;[動力] 渦輪機
功能:服務請求呼叫客戶端負載均衡,服務間發起請求的時候,基於Ribbon做負載均衡,從一個服務的多臺機器中選擇一臺
Feign: 全球(英語)/feɪn/
vt. 假裝;裝作;捏造;想象
vi. 假裝;裝作;作假;佯作
功能:服務請求呼叫,基於Feign的動態代理機制,根據註解和選擇的機器,拼接請求URL地址,發起請求
Hystrix:hy /,etʃ 'waɪ/ strix /s墜x/ 嗨s墜x
短語:.豪豬屬 蝟草屬 豪豬 斷路器
功能:熔斷器,發起請求是通過Hystrix的執行緒池來走的,不同的服務走不同的執行緒池,實現了不同服務呼叫的隔離,避免了服務雪崩的問題
Zuul:/zuːl/
短語:zuul 閘道器 路由閘道器 祖魯樂團 靜態檔案
功能:api路由閘道器,如果前端、移動端要呼叫後端系統,統一從Zuul閘道器進入,由Zuul閘道器轉發請求給對應的服務
看別人部落格的一句話,貼出來:當我對zuul有點映像的時候,它已經過時了,SpringCloud Gateway就誕生,這讓我們這些33歲的老程式設計師怎麼活呢。
Sleuth: /sluθ/
n. 偵探;警犬
vi. 做偵探;偵查
功能:服務鏈路追蹤,主要功能就是在分散式系統中提供追蹤解決方案,並且相容支援了 zipkin
Spring Cloud核心元件:Eureka 服務註冊與發現
他有三端構成
1.Eureka Server 服務註冊與發現中心端
2.Service Provider服務提供者端
3.Service Consumer服務呼叫者端
官方圖:
Spring Cloud核心元件:Feign
介面呼叫,restful風格http可以用調java介面方式去呼叫。
自己組裝url與引數還有請求頭等資訊,不用自己去寫啦。簡單易用。
看下呼叫方式與程式碼
//url=http://www.me.com
@FeignClient(url = "${feign.order-promotion.url}") public interface PromotionClient { @RequestMapping(value = "/Member/Promotion/ReleasePromtionByOrderId", method = RequestMethod.POST) BaseWcfResponse<Integer> ReleasePromtionByOrderId(@RequestBody ReleasePromtionReq request); }
Spring Cloud核心元件:Ribbon
客戶端負載均衡,一個服務部署多臺機器的情況feign不知道呼叫那臺服務,那麼ribbon就可以使用預設abab的輪詢演算法,給確定那一臺機器
Spring Cloud核心元件:Hystrix
熔斷器,個別服務介面掛拉,可能會影響整個服務鏈路,導致整體服務不可用,這個時候hystrix就派上用場啦。
Spring Cloud核心元件:Zuul
前端、移動端要呼叫後端系統,統一從Zuul閘道器進入,由Zuul閘道器轉發請求給對應的服務
整體專案架構圖
總結
感覺好累,接下來會寫這個總架構圖中的程式碼與運維實現。
就這吧,88