新聞中心
這篇文章主要講解了“spring-cloud有哪些作用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“spring-cloud有哪些作用”吧!
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),平武企業(yè)網(wǎng)站建設(shè),平武品牌網(wǎng)站建設(shè),網(wǎng)站定制,平武網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,平武網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Spring cloud研究總結(jié)
微服務(wù)啟動
Spring cloud沿用了spring boot的啟動方式
普通服務(wù)用
@EnableDiscoveryClient
@SpringBootApplication
注冊中心
服務(wù)注冊
Spring cloud微服務(wù),需要有一個注冊環(huán)境eureka-server,每個服務(wù)都將注冊到該服務(wù)中去。
配置如下,
eureka-server的maven引入
application.properties配置文件
在默認(rèn)設(shè)置下,該服務(wù)注冊中心也會將自己作為客戶端來嘗試注冊它自己,所以我們需要禁用它的客戶端注冊行為(單點(diǎn)注冊中心,后集群部署會有不同)
生產(chǎn)者
生產(chǎn)者需要將服務(wù)發(fā)布到注冊中心
注冊到注冊中心:
eureka.client.serviceUrl.defaultZone=http://localhost:7070/eureka/
消費(fèi)者
消費(fèi)者調(diào)用服務(wù)
定義接口,將service-B以接口的形式定義好,這個service-B就是微服務(wù)在注冊中心定義的服務(wù)名稱
負(fù)載均衡策略
相同的服務(wù),以同一個id,不同端口,注冊到注冊中心,在調(diào)用時,spring-cloud通過ribbon實(shí)現(xiàn)服務(wù)調(diào)度。Ribbon會通過服務(wù)的負(fù)荷,優(yōu)先調(diào)用負(fù)荷底的服務(wù)。
注冊中心集群
注冊中心通過相互注冊的形式,spring cloud擁有服務(wù)傳遞的能力,從而能夠?qū)崿F(xiàn),注冊中心,集群配置
配置一:
假設(shè)我們有3個注冊中心,我們將peer1、peer2、peer3各自都將serviceUrl指向另外兩個節(jié)點(diǎn)。換言之,peer1、peer2、peer3是兩兩互相注冊的。啟動三個服務(wù)注冊中心,并將compute-service的serviceUrl指向peer1并啟動,可以獲得如下圖所示的集群效果。
配置二
依然假設(shè)我們有3個注冊中心,我們將peer1的serviceUrl指向peer2,peer2的指向peer3,peer3的指向peer1,此時peer1、peer2、peer3通過單向邊形成環(huán)。分別啟動peer1、peer2、peer3,并訪問信息頁面,我們可以找到下面的規(guī)律,peer1成為了peer2的分片節(jié)點(diǎn),peer2成為了peer3的分片節(jié)點(diǎn),peer3則成為了peer1的分片節(jié)點(diǎn),再將compute-service的serviceUrl指向peer1并啟動。放別訪問peer1、peer2、peer3的信息頁面,可以發(fā)現(xiàn)compute-service均被peer2和peer3同步過去了,所以單向邊也能進(jìn)行服務(wù)的傳播與同步。此時,我們斷開peer2,可以看到peer3中的compute-service消失了。重新開啟peer2并斷開peer3,可以看到peer2依然能同步到compute-service。所以我們可以得出結(jié)論,Eureka Server的傳播與同步是具備方向性的。
兩兩注冊的方式可以實(shí)現(xiàn)集群中節(jié)點(diǎn)完全對等的效果,實(shí)現(xiàn)最高可用性集群,任何一臺注冊中心故障都不會影響服務(wù)的注冊與發(fā)現(xiàn)Eureka Server具備單方面有指向的服務(wù)傳播與同步機(jī)制,在一些對服務(wù)發(fā)現(xiàn)有限制的情況下,可以利用這樣的機(jī)制進(jìn)行服務(wù)注冊與發(fā)現(xiàn)的的單向控制
斷路器
1.斷路器機(jī)制
斷路器很好理解, 當(dāng)Hystrix Command請求后端服務(wù)失敗數(shù)量超過一定比例(默認(rèn)50%), 斷路器會切換到開路狀態(tài)(Open). 這時所有請求會直接失敗而不會發(fā)送到后端服務(wù). 斷路器保持在開路狀態(tài)一段時間后(默認(rèn)5秒), 自動切換到半開路狀態(tài)(HALF-OPEN). 這時會判斷下一次請求的返回情況, 如果請求成功, 斷路器切回閉路狀態(tài)(CLOSED), 否則重新切換到開路狀態(tài)(OPEN). Hystrix的斷路器就像我們家庭電路中的保險絲, 一旦后端服務(wù)不可用, 斷路器會直接切斷請求鏈, 避免發(fā)送大量無效請求影響系統(tǒng)吞吐量, 并且斷路器有自我檢測并恢復(fù)的能力.
2.Fallback
Fallback相當(dāng)于是降級操作. 對于查詢操作, 我們可以實(shí)現(xiàn)一個fallback方法, 當(dāng)請求后端服務(wù)出現(xiàn)異常的時候, 可以使用fallback方法返回的值. fallback方法的返回值一般是設(shè)置的默認(rèn)值或者來自緩存.
3.資源隔離
在Hystrix中, 主要通過線程池來實(shí)現(xiàn)資源隔離. 通常在使用的時候我們會根據(jù)調(diào)用的遠(yuǎn)程服務(wù)劃分出多個線程池. 例如調(diào)用產(chǎn)品服務(wù)的Command放入A線程池, 調(diào)用賬戶服務(wù)的Command放入B線程池. 這樣做的主要優(yōu)點(diǎn)是運(yùn)行環(huán)境被隔離開了. 這樣就算調(diào)用服務(wù)的代碼存在bug或者由于其他原因?qū)е伦约核诰€程池被耗盡時, 不會對系統(tǒng)的其他服務(wù)造成影響. 但是帶來的代價就是維護(hù)多個線程池會對系統(tǒng)帶來額外的性能開銷. 如果是對性能有嚴(yán)格要求而且確信自己調(diào)用服務(wù)的客戶端代碼不會出問題的話, 可以使用Hystrix的信號模式(Semaphores)來隔離資源.
服務(wù)異步調(diào)用
異步調(diào)用調(diào)用消息,無需等待消息返回。
1.定義消費(fèi)者服務(wù)為可異步調(diào)用服務(wù)
定義方法為異步方法
滿足以上兩點(diǎn),在消費(fèi)者服務(wù)調(diào)用時候,就實(shí)現(xiàn)了異步操作。
分布式部署配置文件管理
當(dāng)微服務(wù)越來越多時,系統(tǒng)的配置文件就會越來越多,通過spring cloud提供的config-server來集中管理配置文件信息。Config -server默認(rèn)的將配置文件通過git存放。支持遠(yuǎn)程獲取,以遠(yuǎn)程git配置倉庫為例
1.在oschina創(chuàng)建一個git配置倉庫,里面包含各種配置文件,包括,lovnx-dev.properties,lovnx-test.properties。
2.創(chuàng)建config-server服務(wù)
設(shè)置遠(yuǎn)程倉庫信息
普通服務(wù)調(diào)用配置服務(wù)
這樣就獲取到了lovnx-dev.properties配置文件信息
Spring cloud監(jiān)控
應(yīng)用的監(jiān)控功能,對于分布式系統(tǒng)非常重要。如果把分布式系統(tǒng)比作整個社會系統(tǒng)。那么各個服務(wù)對應(yīng)社會中具體服務(wù)機(jī)構(gòu),比如銀行、學(xué)校、超市等,那么監(jiān)控就類似于警察局和醫(yī)院,所以其重要性顯而易見。這里說的,監(jiān)控服務(wù)的部署及運(yùn)行情況,和斷路器監(jiān)控不一樣,這里主要是監(jiān)控服務(wù)及服務(wù)器的各項(xiàng)指標(biāo)
感謝各位的閱讀,以上就是“spring-cloud有哪些作用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對spring-cloud有哪些作用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
分享名稱:spring-cloud有哪些作用
標(biāo)題鏈接:http://www.dlmjj.cn/article/jghejj.html