Spring-Cloud基礎(chǔ)組件總結(jié)

注冊中心

  • 1:Eureka 服務(wù)的注冊中心
  • 2:Consul 服務(wù)注冊中心自帶了eureka

通過 @EnableEurekaServer 注解在一個(gè)普通的SpringBoot應(yīng)用中開啟一個(gè)服務(wù)注冊中心,在默認(rèn)情況下,其會默認(rèn)將自己認(rèn)為是客戶端向服務(wù)端注冊自己,其本身就是一個(gè)服務(wù)端注冊中心,要修改其默認(rèn)注冊行為

@EnableDiscoveryClient

在SpringBoot的應(yīng)用主類上加上此注解,來激活Eureka中DiscoveryClient的實(shí)現(xiàn),通過在controller里注入此類來獲取到服務(wù)端信息的輸出加入到當(dāng)前服務(wù)體系中,每一個(gè)客戶端都需要加上這個(gè)注解來讓服務(wù)端找到自己并加入到服務(wù)端

@EnableEurekaClient

SpringBoot的應(yīng)用主類中加上此注解表明自己是Eureka的Client

  • 結(jié)論

兩個(gè)注解都是為了向注冊中心表明自己是服務(wù)注冊中心的Client
共同點(diǎn),他們都需要在application.yml配置文件中,配置注冊中心的地址
不同點(diǎn),@EnableDiscoveryClient注解,服務(wù)注冊中心可以是Eureka也可以是Consul也可以是zookeeper 但是@EnableEurekaClient注解其服務(wù)注冊中心最好是Eureka

服務(wù)消費(fèi)

  • 1:LoadBalancerClient (隨機(jī)選取)

客戶端負(fù)載均衡 choose 函數(shù)從服務(wù)注冊中心隨機(jī)選取一個(gè)client實(shí)列,可以從這個(gè)實(shí)列里來獲取host加端口去訪問消費(fèi)client

  • 2:Spring Cloud Ribbon (列表輪詢)

客戶端負(fù)載均衡 是基于Netflix Ribbon實(shí)現(xiàn)的一套客戶端負(fù)載均衡的工具。它是一個(gè)基于HTTP和TCP的客戶端負(fù)載均衡器拜效。它可以通過在客戶端中配置ribbonServerList來設(shè)置服務(wù)端列表去輪詢訪問以達(dá)到均衡負(fù)載的作用迂猴。
使用ribbon時(shí)url參數(shù)沒有拼接直接調(diào)用服務(wù)砰左,因springCloud Ribbon有一個(gè)攔截器能夠?qū)崿F(xiàn)在實(shí)際調(diào)用的時(shí)候去選擇實(shí)列的服務(wù)婚陪,并將實(shí)際要請求的IP地址和端口替換這里的服務(wù)名茎活,從而完成服務(wù)接口的調(diào)用仍劈。

添加一個(gè)負(fù)載均衡的支持

@LoadBalanced,@Bean一個(gè)RestTemplate 就擁有了負(fù)載均衡的效果,拿到 RestTemplate對象直接請求,url地址,spring Ribbon攔截器會攔截住請求,將url替換成對應(yīng)的IP和端口去列表輪訓(xùn)訪問client 如果不添加@LoadBalanced 會報(bào)無法映射,因映射ip:port是LoadBlanceClient實(shí)現(xiàn),

  • Fegin (目前來看負(fù)載均衡方式列表循環(huán))

基于ribbon實(shí)現(xiàn)的 聲明式服務(wù)調(diào)用客戶端 快速而又簡潔,通過接口來聲明定義調(diào)用的服務(wù),實(shí)現(xiàn)了可插拔式調(diào)用,同時(shí)擴(kuò)展了 springMvc注解的支持整合了ribbon和eureka提供負(fù)載均衡的HTTP客戶端實(shí)現(xiàn)
通過@EnableFeignClients開啟fegin客戶端加上@EnableDiscoveryClient上讓eureka發(fā)現(xiàn)服務(wù),接口通過@FeignClient("eureka-client")eureka上注冊的服務(wù)實(shí)列 通過@GetMapping("/dc") 調(diào)取對應(yīng)服務(wù)實(shí)列接口(本次注冊eureka上服務(wù)實(shí)列為三個(gè))

Spring Cloud Config(實(shí)現(xiàn)了應(yīng)用多環(huán)境的外部化配置以及版本管理)

用來為分布式系統(tǒng)中的基礎(chǔ)設(shè)施和微服務(wù)應(yīng)用提供集中化的外部配置支持,分兩個(gè)方向 服務(wù)端,客戶端娄猫。

  • 服務(wù)端

通過@EnableConfigServer注解開啟一個(gè)服務(wù)環(huán)境配置中心,默認(rèn)實(shí)現(xiàn)了與git倉庫存儲配置信息,通過在git倉庫修改配置文件內(nèi)容或信息,讓客戶端加載到配置倉庫里的配置信息,(接口,加密算法,解密,等都可以配置在配置倉庫)

  • 客戶端

通過連接服務(wù)端,獲取服務(wù)端里倉庫配置中心里環(huán)境文件配置信息(接口,加密算法等等)

Spring Cloud Hystrix

在Spring Cloud Hystrix中實(shí)現(xiàn)了線程隔離椅您、斷路器等一系列的服務(wù)保護(hù)功能外冀。它也是基于Netflix的開源框架 Hystrix實(shí)現(xiàn)的,該框架目標(biāo)在于通過控制那些訪問遠(yuǎn)程系統(tǒng)掀泳、服務(wù)和第三方庫的節(jié)點(diǎn)雪隧,從而對延遲和故障提供更強(qiáng)大的容錯(cuò)能力。Hystrix具備了服務(wù)降級员舵、服務(wù)熔斷脑沿、線程隔離、請求緩存马僻、請求合并以及服務(wù)監(jiān)控等強(qiáng)大功能庄拇。

服務(wù)降級

  • @HystrixCommand 服務(wù)降級處理。

服務(wù)消費(fèi)方觸發(fā)服務(wù)請求超時(shí)異常服務(wù)消費(fèi)通過@HystrixCommand("兄弟這可不是字符串而是你指定要執(zhí)行的方法") 中指定的降級邏輯去處理了

Spring Cloud Zuul

  • 網(wǎng)關(guān)服務(wù) 配置了統(tǒng)一入口Api

zuzu和eureka結(jié)合時(shí),它默認(rèn)會去eureka里去尋找client ,通過路徑上輸出的client的serivceId去尋找eureka里的client

  • 如下

http://localhost:1112/eureka-client/dc 這個(gè)地址中eureka-client 進(jìn)到zuzu,zuzu會去eureka里去尋找client的serviceId為eureka-client的client找到了默認(rèn)以列表輪訓(xùn)的方式去訪問client韭邓。
這里它默認(rèn)負(fù)載均衡的方式為ribbon(列表輪訓(xùn)訪問) 也可以通過配置路由規(guī)則

zuul:routes:服務(wù)名:要映射路徑:映射client的url:
     方式:            Y                           M       L文件配置
zuul:
  routes:
#  single-instance
    api-a:
      path: /api-a/**
      url: http://localhost:2004/
 api-b:
      path: /api-b/**
      serviceId: api-b
api-b:    //注意這里需要設(shè)置ribbon默認(rèn)不去加載否則加載注冊中心的client       
  ribbon:
    listOfServers: http://localhost:2003/, http://localhost:2002/
ribbon:
  eureka:
    enabled:  false//禁止默認(rèn)前往eureka里尋找client清單

Spring Cloud Zuul過濾器(配置過濾請求規(guī)則)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末措近,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子仍秤,更是在濱河造成了極大的恐慌熄诡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诗力,死亡現(xiàn)場離奇詭異凰浮,居然都是意外死亡我抠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門袜茧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菜拓,“玉大人,你說我怎么就攤上這事笛厦∧啥Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵裳凸,是天一觀的道長贱鄙。 經(jīng)常有香客問我,道長姨谷,這世上最難降的妖魔是什么逗宁? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮梦湘,結(jié)果婚禮上瞎颗,老公的妹妹穿的比我還像新娘。我一直安慰自己捌议,他們只是感情好哼拔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓣颅,像睡著了一般倦逐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弄捕,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天僻孝,我揣著相機(jī)與錄音,去河邊找鬼守谓。 笑死穿铆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斋荞。 我是一名探鬼主播荞雏,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼平酿!你這毒婦竟也來了凤优?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜈彼,失蹤者是張志新(化名)和其女友劉穎筑辨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幸逆,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棍辕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年暮现,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楚昭。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡栖袋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抚太,到底是詐尸還是另有隱情塘幅,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布尿贫,位于F島的核電站电媳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏庆亡。R本人自食惡果不足惜匆背,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望身冀。 院中可真熱鬧,春花似錦括享、人聲如沸搂根。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剩愧。三九已至,卻和暖如春娇斩,著一層夾襖步出監(jiān)牢的瞬間仁卷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工犬第, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锦积,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓歉嗓,卻偏偏與公主長得像丰介,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子鉴分,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容