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