一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【微服務(wù)】135:SpringCloud組件

 劉小愛v 2020-08-25

今天是劉小愛自學(xué)Java的第135天。

感謝你的觀看,謝謝你。

學(xué)習(xí)內(nèi)容安排如下:

昨天學(xué)了下springcloud的兩個組件,今天繼續(xù)學(xué)習(xí)剩下的3個組件。

當(dāng)然還有其它的組件,這里就不詳細學(xué)習(xí)了,暫且只學(xué)和項目中相關(guān)的即可。

注意,做一個說明

這幾天因為自身原因,導(dǎo)致學(xué)習(xí)狀態(tài)出了點問題,故文章質(zhì)量很差,后續(xù)會加緊調(diào)整狀態(tài)。

一、Zuul網(wǎng)關(guān)

Zuul:維基百科中,它是電影《捉鬼敢死隊》里的怪獸,在紐約引發(fā)了巨大騷亂。

所以在微服務(wù)中,Zuul就是守門的大Boss,其核心功能是:過濾和路由。

它是一個獨立的服務(wù),我們一步步編寫。

1Zuul-Service

①依賴導(dǎo)入

zuul對應(yīng)的就是網(wǎng)關(guān)的依賴。

既然網(wǎng)關(guān)是一個服務(wù),那么它也要去eureka注冊,所以還需要eureka客戶端的依賴。

上圖中因為截圖原因,我并沒有截全。

②啟動類上開啟Zuul

在啟動類上,通過@EnableZuulProxy開啟網(wǎng)關(guān)功能,也就意味著該應(yīng)用就是網(wǎng)關(guān)了。

看到Enable這個單詞,本身就是開啟的意思,也就可以想到是開啟了某個功能。

2網(wǎng)關(guān)的配置文件

①網(wǎng)關(guān)的端口

這不用多說,每個服務(wù)都要配置。

②網(wǎng)關(guān)的服務(wù)名稱

取名為api-gateway,在注冊中心顯示的也就是該名稱,gateway本身也是網(wǎng)關(guān)的意思,

③網(wǎng)關(guān)的路由配置

該配置可以省略不寫,會自動將映射路徑和服務(wù)id匹配起來,當(dāng)然我們要知道它是怎么回事,畫圖對比說明:

前者是通過網(wǎng)關(guān)訪問服務(wù),后者是通過服務(wù)直接訪問,該配置就能達到這樣的效果。

再次強調(diào):該配置可以不寫,會自動匹配。

④配置網(wǎng)關(guān)對應(yīng)的注冊中心

每個服務(wù)都需要去eureka注冊中心注冊。

3過濾器

網(wǎng)關(guān)是如何保護其它服務(wù)的?過濾器。

①filterType(方法

返回值為字符串,代表過濾器的類型:

  • pre:請求在被路由之前執(zhí)行,也就是上圖例子中的類型。
  • routing:在路由請求時調(diào)用。
  • post:在routing和errror過濾器之后調(diào)用。
  • erro:處理請求時發(fā)生錯誤調(diào)用。

②filterOrder()方法

通過返回的int值來定義過濾器的執(zhí)行順序,數(shù)字越小優(yōu)先級越高。

③shouldFilter()方法

返回一個Boolean值,判斷該過濾器是否需要執(zhí)行:返回true執(zhí)行,返回false不執(zhí)行。

④run()方法

過濾器的具體邏輯,我們可以自定義一個過濾器的,以后遇到具體業(yè)務(wù)會詳細說明。

二、Feign

Feign,也就是偽裝的意思,為什么叫偽裝?

就是使用它后,就好像是在自己在處理具體的業(yè)務(wù)邏輯了,實際上是在調(diào)用別的服務(wù)。

不用我們自己拼接url,拼接參數(shù)等等操作,一切都交給Feign去做。

具體我們用一個例子來說明:

①引入feign依賴

openfeign即開啟feign的意思。

②啟用feign客戶端

通過@EnableFeignClients注解開啟feign客戶端,開啟之后就可以直接使用了。

注意:feign是使用在某個服務(wù)消費方中的,它并不是一個新的服務(wù)。

③編寫一個feign客戶端

  • 注解@FeignClient指定要偽裝的服務(wù)名。
  • 和Controller層一樣,使用@GetMapping說明請求路徑。
  • 最后說明返回值為User。

④Controller層使用feign實現(xiàn)調(diào)用

直接使用userClient調(diào)用feign客戶端里的方法,就只需要說明一個id就好了。

我們現(xiàn)在再看Controller層,很難直接看出它是在調(diào)用別的服務(wù),而是自己在處理業(yè)務(wù),這也是它的名稱“偽裝”的由來。

以前我們都是在Controller層中使用url的,一眼就能看出是在遠程調(diào)用。

三、Hystrix

Hystix是豪豬的意思,豪豬全身是刺,看起來就不好惹,所以Hystix是一種保護機制。

那么Hystix的作用是什么呢?具體要保護什么呢?想明白這些問題,得知道雪崩問題。

1雪崩問題

微服務(wù)中,服務(wù)間調(diào)用關(guān)系錯綜復(fù)雜,一個請求,可能需要調(diào)用多個微服務(wù)接口才能實現(xiàn),會形成非常復(fù)雜的調(diào)用鏈路:

如上圖所示,當(dāng)然我這算是非常簡單了,實際上會復(fù)雜很多。

一次業(yè)務(wù)請求,需要調(diào)用很多個服務(wù),此時服務(wù)B出現(xiàn)異常了,請求阻塞。

用戶不會得到響應(yīng),那么線程一不會釋放,后續(xù)越來越多的用戶請求到來,越來越多的線程會阻塞。

服務(wù)器支持的線程和并發(fā)數(shù)有限,請求一直阻塞,會導(dǎo)致服務(wù)器資源耗盡,從而導(dǎo)致所有其它服務(wù)都不可用,形成雪崩效應(yīng)。

Hystix解決雪崩問題的手段主要是服務(wù)降級,包括:線程隔離,服務(wù)熔斷。

2注解@SpringCloudApplication

使用該注解后,就相當(dāng)于使用了:

  • @SpringBootApplication:這是一個SpringBoot應(yīng)用。
  • @EnableDiscoveryClient:開啟注冊中心。
  • @EnableCircuitBreaker:開啟熔斷。

關(guān)于線程熔斷問題,Hystrix這個技術(shù)已經(jīng)很久沒有維護了,現(xiàn)在主流最新的應(yīng)用是使用SpringCloud阿里巴巴相關(guān)組件。

但是我這邊的教程用的就是這些,我不能說和教程對著來,要學(xué)新的組件只能以后再說了。

最后

謝謝你的觀看。

如果可以的話,麻煩幫忙點個贊,謝謝你。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲欧美精品伊人久久| 五月婷日韩中文字幕四虎| 精品一区二区三区乱码中文| 热情的邻居在线中文字幕| 日韩蜜桃一区二区三区| 日韩一区二区三区四区乱码视频| 日韩欧美国产精品中文字幕| 国产在线小视频你懂的| 亚洲清纯一区二区三区| 欧美人妻一区二区三区| 亚洲综合伊人五月天中文| 久久精品国产99精品亚洲| 高清一区二区三区大伊香蕉| 在线免费观看一二区视频| 91偷拍裸体一区二区三区| 日本少妇三级三级三级| 国产精品一区二区三区欧美| 高清不卡一卡二卡区在线 | 91日韩欧美国产视频| 亚洲午夜精品视频在线| 国产精品久久精品毛片| 国产精品久久精品毛片| 色综合久久六月婷婷中文字幕| 国产高清一区二区不卡| 国产精品十八禁亚洲黄污免费观看| 日韩高清一区二区三区四区| 日韩人妻少妇一区二区| 丰满少妇被粗大猛烈进出视频| 儿媳妇的诱惑中文字幕| 亚洲中文在线男人的天堂| 欧美国产在线观看精品| 久久精品国产亚洲av久按摩 | 国产免费成人激情视频| 国产级别精品一区二区视频| 日本不卡在线视频你懂的| 欧美一区二区口爆吞精| 成人午夜激情在线免费观看 | 中文久久乱码一区二区| 国产av一区二区三区四区五区| 欧美激情区一区二区三区| 久久天堂夜夜一本婷婷|