更新時(shí)間:2021-09-29 08:16:39 來源:動力節(jié)點(diǎn) 瀏覽1719次
1.eureka-client: Eureka客戶端服務(wù),用來注冊服務(wù)到Eureka服務(wù)端。
2.eureka-server: Eureka服務(wù)端服務(wù)(注冊中心)服務(wù)都需要在該中心進(jìn)行注冊。
3.file-upload: 實(shí)現(xiàn)文件上傳
4.form-submit: 實(shí)現(xiàn)表單提交
5.hystrix-consumer-reading:
6.hystrix-server-bookstore:
SpringCloud熔斷器機(jī)制實(shí)現(xiàn),使用Hystrix服務(wù)熔斷,防止因某個(gè)服務(wù)出現(xiàn)故障,導(dǎo)致服務(wù)級聯(lián)調(diào)用而引發(fā)雪崩問題。
*在微服務(wù)架構(gòu)中通常會有多個(gè)服務(wù)層調(diào)用,基礎(chǔ)服務(wù)的故障可能會導(dǎo)致級聯(lián)故障,進(jìn)而造成整個(gè)系統(tǒng)不可用的情 況,這種現(xiàn)象被稱為服務(wù)雪崩效應(yīng)。服務(wù)雪崩效應(yīng)是一種因“服務(wù)提供者”的不可用導(dǎo)致“服務(wù)消費(fèi)者”的不可 用,并將不可用逐漸放大的過程。
*熔斷器的原理很簡單,如同電力過載保護(hù)器。它可以實(shí)現(xiàn)快速失敗,如果它在一段時(shí)間內(nèi)偵測到 許多類似的錯(cuò)誤,會強(qiáng)迫其以后的多個(gè)調(diào)用快速失敗,不再訪問遠(yuǎn)程服務(wù)器,從而防止應(yīng)用程序不斷地嘗試執(zhí)行可 能會失敗的操作,使得應(yīng)用程序繼續(xù)執(zhí)行而不用等待修正錯(cuò)誤,或者浪費(fèi)CPU時(shí)間去等到長時(shí)間的超時(shí)產(chǎn)生。熔斷 器也可以使應(yīng)用程序能夠診斷錯(cuò)誤是否已經(jīng)修正,如果已經(jīng)修正,應(yīng)用程序會再次嘗試調(diào)用操作。
*熔斷器模式就像是那些容易導(dǎo)致錯(cuò)誤的操作的一種代理。這種代理能夠記錄最近調(diào)用發(fā)生錯(cuò)誤的次數(shù),然后決定使 用允許操作繼續(xù),或者立即返回錯(cuò)誤。熔斷器就是保護(hù)服務(wù)高可用的最后一道防線。
*斷路器很好理解, 當(dāng)Hystrix Command請求后端服務(wù)失敗數(shù)量超過一定比例(默認(rèn)50%), 斷路器會切換到開路狀態(tài) (Open). 這時(shí)所有請求會直接失敗而不會發(fā)送到后端服務(wù). 斷路器保持在開路狀態(tài)一段時(shí)間后(默認(rèn)5秒), 自動切換 到半開路狀態(tài)(HALF-OPEN). 這時(shí)會判斷下一次請求的返回情況, 如果請求成功, 斷路器切回閉路狀態(tài)(CLOSED), 否 則重新切換到開路狀態(tài)(OPEN). Hystrix的斷路器就像我們家庭電路中的保險(xiǎn)絲, 一旦后端服務(wù)不可用, 斷路器會直接 切斷請求鏈, 避免發(fā)送大量無效請求影響系統(tǒng)吞吐量, 并且斷路器有自我檢測并恢復(fù)的能力.
*Netflix的Hystrix庫提供了熔斷模式的實(shí)現(xiàn):當(dāng)對方法進(jìn)行熔斷處理時(shí), Hystrix 會監(jiān)控方法的失敗調(diào)用,如果失敗 次數(shù)達(dá)到閾值,Hystrix就打開熔斷以致后續(xù)訪問自動失敗。熔斷開啟后,Hystrix把對方法的調(diào)用重定向到特定回調(diào) 方法中。
*Spring Cloud Netflix Hystrix會查找加了@HystrixCommand注解的方法,并使用代理模式對該方法進(jìn)行包裝,該 代理會連接到熔斷器以便Hystrix能夠監(jiān)控。當(dāng)前只對標(biāo)記了@Component和@Service注解的類有效。
7.jpa-data-demo: 與jpa集成
8.mysql-data-demo: 與MySql集成
9.redis-demo: 與Redis集成
10.ribbon-consumer-user:
11.ribbon-consumer-user1:
12.ribbon-consumer-user2:
Ribbon實(shí)現(xiàn)客戶端負(fù)載均衡功能,Ribbon是一個(gè)內(nèi)置于消費(fèi)者(客戶端)的負(fù)載均衡器,能夠?qū)Ψ?wù)提供者發(fā)起調(diào)用時(shí),實(shí)現(xiàn)負(fù)載均衡的處理。
客戶端訪問服務(wù)器提供者方式有三種:
*直接訪問:直接對服務(wù)提供者發(fā)起調(diào)用,沒有負(fù)載均衡的能力和容錯(cuò)保證。
*自己維護(hù)服務(wù)地址列表: 編程效率低,手動維護(hù)成本。
*通過eureka注冊中心進(jìn)行查找: 推薦使用eureka注冊中心查找,實(shí)現(xiàn)透明目的。
13.ribbon-say-hello: ribbon實(shí)現(xiàn)負(fù)載均衡
14.zuul-book: 智能網(wǎng)關(guān)服務(wù)
*Spring cloud Zuul會自動設(shè)置路徑到applicaiton name上。由于我們設(shè)置了zuul.routes.books.url,Zuul將會代 理/books請求給該地址。
*Zuul使用Ribbon來執(zhí)行客戶端負(fù)載均衡,并且默認(rèn)Ribbon使用Eureka發(fā)現(xiàn)服務(wù)。這里我們跳過服務(wù)發(fā)現(xiàn),因此設(shè) 置ribbon.eureka.enabled為false。因此,Ribbon現(xiàn)在不使用Eureka發(fā)現(xiàn)服務(wù),必須手動指定一個(gè)BookService 的url。
15.zuul-gateway:
*Zuul是服務(wù)器端的負(fù)載均衡組件,能夠?qū)φ埱筮M(jìn)行路由和過濾處理,主要對請求進(jìn)行轉(zhuǎn)發(fā),根據(jù)相應(yīng)的規(guī)則引擎轉(zhuǎn) 發(fā)給后端的相應(yīng)服務(wù)。
過濾器是過濾請求的。
zuul過濾器有四中過濾類型:
*pre路由請求前執(zhí)行。
*route處理實(shí)際的路由請求。
*post在請求路由完成后執(zhí)行。
*error處理請求期間出現(xiàn)錯(cuò)誤執(zhí)行。
動力節(jié)點(diǎn)的SpringCloud教程中有更多相關(guān)知識可以學(xué)習(xí),感興趣的小伙伴可以去關(guān)注一下,相信對大家會有所幫助的。
初級 202925
初級 203221
初級 202629
初級 203743