javascript
Spring Cloud笔记
目錄
1、如何調(diào)用底層服務(wù)??RestTemplate
2、是如何找到底層服務(wù)的呢?Eureka
3.服務(wù)負(fù)載均衡?Ribbon
4.寫RestTemplate太繁瑣?提供方與調(diào)用方溝通成本大,效率不高??Open Feign
5、底層系統(tǒng)響應(yīng)慢,超負(fù)載要宕機(jī)了怎么辦? Hystrix
6.網(wǎng)關(guān)Zuul,Router and Filter,令牌桶限流(單機(jī))
?
1、如何調(diào)用底層服務(wù)??RestTemplate
rpc 調(diào)用。spring cloud 使用 http 作為底層協(xié)議。
spring 提供了一個(gè)訪問 http 服務(wù)的客戶端類 RestTemplate ,RestTemplate 傳入服務(wù)端服務(wù)名&端口&方法的Mapping路徑、服務(wù)端需要的Request參數(shù)、服務(wù)端的返回值
?
2、是如何找到底層服務(wù)的呢?Eureka
就像 Consumer 租房子,是如何找到有房出租的人?如何發(fā)現(xiàn)中意的房子?
簡(jiǎn)單粗暴法,一個(gè)個(gè)人去問,你有沒有房子出租?Provider是這個(gè)街區(qū)的本地人,他剛好有房,但是這個(gè)街區(qū)足足好幾萬人。對(duì)于供需雙方而言,效率太都過低下。
有困難的地方就有生意?
這時(shí)Eureka出現(xiàn)了,這片區(qū)域所有有房出租的房東都會(huì)去Eureka那里登記,因?yàn)槁犝f登記之后房子曝光率大大提升了,好房子幾乎很快就能被租出去,Provider當(dāng)然要去試一試。需要房子的Consumer也聽說了這個(gè)消息,只需要花相比之前極少的時(shí)間就能獲得一個(gè)出租房列表,找到中意的房子。原來,Eureka就叫中介。
房東電話打不通?房東不租了?
但有時(shí)候,房子列表也有寫問題,租房人找到房東,有電話打不通的,也有宕房東卻說不租了,這是怎么回事?原來,房子列表一直在增加信息,一些過時(shí)的信息卻沒有去掉,宕房東早就不想出租了,但忘記跟Eureka講,Eureka也沒主動(dòng)去問。聰明的Eureka想了個(gè)辦法,房屋出租服務(wù)續(xù)約:每隔一個(gè)規(guī)定時(shí)間,房東需要來告知他房子是否還出租;房屋出租服務(wù)剔除:3次沒有告知視為不出租了;Eureka將此項(xiàng)寫進(jìn)合同。這樣,出岔子的事幾乎沒有了,對(duì)并沒有完全解決,時(shí)不時(shí)還是會(huì)出現(xiàn)。Eureka認(rèn)為一定是房東的問題,這次他又在合同中加了一條,房屋出租服務(wù)下線:房東確定不想出租時(shí),必須及時(shí)通知!問題又有些許好轉(zhuǎn)。最后Eureka在一個(gè)找房子的顧客得到了答案,原來那個(gè)顧客用筆記記下了自己重點(diǎn)關(guān)注的幾個(gè)房子的信息,因?yàn)樘ΜF(xiàn)在房子也還沒有到期不是很急,半個(gè)月后才去聯(lián)系上面的房東。這難不倒,聰明的Eureka,他做了一個(gè)信息網(wǎng)站用以維護(hù)出租房屋的信息,這樣顧客就能及時(shí)在需要的時(shí)候獲取到新的信息,及時(shí)記錄下的重點(diǎn)信息有變動(dòng),也能及時(shí)更改。
Eureka集團(tuán)?生意大好,Eureka一個(gè)人忙不過來,于是Eureka集團(tuán)誕生了。
?
?
3.服務(wù)負(fù)載均衡?Ribbon
Nginx的集中式負(fù)載均衡,這也叫負(fù)載均衡?那你自己掛了怎么辦?Ribbon來幫忙
牛逼的負(fù)載均衡就是每個(gè)客戶端自己實(shí)現(xiàn)負(fù)載均衡!——Ribbon
負(fù)載均衡具體策略?
默認(rèn)使用RoundRobinRule輪詢、RandomRule隨機(jī)、RetryRule先輪詢+重試
Ribbon建立在RestTemplate之上。
?
4.寫RestTemplate太繁瑣?提供方與調(diào)用方溝通成本大,效率不高??Open Feign
RestTemplate 傳入服務(wù)端服務(wù)名&端口、服務(wù)端需要的Request參數(shù)、服務(wù)端的返回值。這些都由客戶端來處理容易出問題。
Open Feign(內(nèi)置Ribbon)來解決,@FeignClient由提供方提供成jar包,調(diào)用方引用即可,順滑。
?
5、底層系統(tǒng)響應(yīng)慢,超負(fù)載要宕機(jī)了怎么辦? Hystrix
不讓病情惡化:服務(wù)降級(jí)(如:配置快速失敗 HystrixCommand.fallbackMethod),讓服務(wù)有自行恢復(fù)的可能。
打疫苗:配置熔斷時(shí)間(EnableHystrix),快速阻斷病毒傳播造成雪崩式災(zāi)難。
強(qiáng)身體健體才是根本:水平擴(kuò)展(增加服務(wù)個(gè)數(shù),分流處理),垂直擴(kuò)展(單機(jī)硬件性能、軟件性能提升)。
?
6.網(wǎng)關(guān)Zuul,Router and Filter,令牌桶限流(單機(jī))
如何實(shí)現(xiàn)分布式下的限流?redis過期時(shí)間 & incr() 方法可以利用起來
總結(jié)
以上是生活随笔為你收集整理的Spring Cloud笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue的this.$set的作用
- 下一篇: gradle idea java ssm