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