springcloud是微服務架構的集大成者,將一系列優秀的組件進行了整合。基於springboot構建,對咱們熟悉spring的程序員來講,上手比較容易。前端
經過一些簡單的註解,咱們就能夠快速的在應用中配置一下經常使用模塊並構建龐大的分佈式系統。java
下面主要用圖來理解下各個組件的概念吧程序員
被我搞綠的,是比較經常使用的組件!!算法
那麼本篇也簡單介紹下被我搞綠的,我沒搞的,大家找度娘搞吧。 spring
Eureka:全球(美國)/jʊ'rikə/ 後端
n. 尤里卡(美國地名);優銅api
n. (美)歐雷卡(人名)springboot
int. (eureka) 我發現了,我找到了;有了restful
功能:服務註冊與發現,各個服務啓動時,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
他有三端構成
1.Eureka Server 服務註冊與發現中心端
2.Service Provider服務提供者端
3.Service Consumer服務調用者端
官方圖:
接口調用,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); }
客戶端負載均衡,一個服務部署多臺機器的狀況feign不知道調用那臺服務,那麼ribbon就可使用默認abab的輪詢算法,給肯定那一臺機器
熔斷器,個別服務接口掛拉,可能會影響整個服務鏈路,致使總體服務不可用,這個時候hystrix就派上用場啦。
前端、移動端要調用後端系統,統一從Zuul網關進入,由Zuul網關轉發請求給對應的服務
感受好累,接下來會寫這個總架構圖中的代碼與運維實現。
就這吧,88