javascript
SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断...
?
?
1 遠(yuǎn)程服務(wù)資源的調(diào)用
1.1 古老的套路
在微服務(wù)出現(xiàn)之前,所有的遠(yuǎn)程服務(wù)資源必須通過RestTemplate或者HttpClient進(jìn)行;但是這兩者僅僅實(shí)現(xiàn)了遠(yuǎn)程服務(wù)資源的調(diào)用,并未提供負(fù)載均衡實(shí)現(xiàn),所以程序員必須自己實(shí)現(xiàn)負(fù)載均衡功能;而且當(dāng)遠(yuǎn)程服務(wù)是集群部署時(shí),利用RestTemplate或者HttpClient封裝的客戶端必須配置好遠(yuǎn)程服務(wù)的先關(guān)信息。
技巧01:利用Spring5.X 提供的WebClient可以實(shí)現(xiàn)響應(yīng)式訪問遠(yuǎn)程服務(wù)資源
? ?技巧02:利用RestTemplate和WebClient封裝客戶端的參考博文:參考博文01 參考博文02
缺點(diǎn)01:需要自己實(shí)現(xiàn)負(fù)載均衡功能
絕點(diǎn)02:封裝客戶端時(shí)必須配置好遠(yuǎn)程服務(wù)的信息,如果遠(yuǎn)程服務(wù)是集群部署時(shí)工作量時(shí)巨大的;而且一旦遠(yuǎn)程服務(wù)信息變動(dòng),客戶端也必須進(jìn)行變動(dòng)
1.2 微服務(wù)套路
微服務(wù)出現(xiàn)過后,封裝的客戶端不需要配置遠(yuǎn)程服務(wù)的信息,因?yàn)檫@些信息都有注冊(cè)中心統(tǒng)一幫我們進(jìn)行管理,也不需要自己實(shí)現(xiàn)負(fù)載均衡功能;基于SpringCloud的微服務(wù)之間的通訊方式主要通過 ribbon + restTemplate 或者 feign 實(shí)現(xiàn)
技巧01:利用 ribbon + restTemplate 實(shí)現(xiàn)時(shí)其實(shí)和只用RestTemplate實(shí)現(xiàn)的區(qū)別就在于不用配置遠(yuǎn)程服務(wù)的信息,而且提供了負(fù)載均衡功能
技巧02:ribbon 負(fù)責(zé)獲取注冊(cè)中心的遠(yuǎn)程服務(wù)信息以及提供負(fù)載均衡功能
?
2 Ribbon知識(shí)點(diǎn)
daigengxin.......
?
3 Feign知識(shí)點(diǎn)
待更新........
?
4 項(xiàng)目準(zhǔn)備
4.1 注冊(cè)中心 Eureka Server
創(chuàng)建一個(gè)單例的服務(wù)注冊(cè)中心
4.2 服務(wù)提供者 Eureka Client
4.3 服務(wù)消費(fèi)者 Eureka Client?
?
5 利用 Ribbon + RestTemplate 實(shí)現(xiàn)
利用 Ribbon + RestTemplate 調(diào)用遠(yuǎn)程服務(wù)資源
技巧01:先啟動(dòng)服務(wù)注冊(cè)中心
5.1 創(chuàng)建遠(yuǎn)程服務(wù)Restful API
在服務(wù)提供的服務(wù)中提供一個(gè)Restful API接口供服務(wù)消費(fèi)方調(diào)用
5.2 集群部署服務(wù)提供方
將服務(wù)提供方打包后在不同的端口啟動(dòng)即可,本案例直接利用IDEA進(jìn)行集群部署
? 5.2.1 打開應(yīng)用配置
5.2.2 復(fù)制一份原來的配置
5.2.3 修改配置信息
只需要修改配置名稱和啟動(dòng)端口即可
5.2.4 分別啟動(dòng)兩個(gè)配置即可
技巧01:每個(gè)配置啟動(dòng)前可以修改相關(guān)的內(nèi)容信息,這樣做的目的是為了開發(fā)階段可以看到效果;生產(chǎn)中時(shí)不能更改內(nèi)容信息的,因?yàn)闀r(shí)集群嘛,內(nèi)容肯定需要保持一致
技巧02:如果項(xiàng)目中利用了devtools依賴,請(qǐng)注釋掉,并關(guān)閉IDEA的自動(dòng)編譯功能
5.2.5 到注冊(cè)中心控制面板查看信息
可以看到一個(gè)應(yīng)用在兩個(gè)端口啟動(dòng)了
5.2.6 分別訪問restful API
5.3 編寫遠(yuǎn)程調(diào)用控制類
在服務(wù)消費(fèi)方利用RestTemplate調(diào)用服務(wù)提供方提供的資源數(shù)據(jù),參考文檔
? 》配置RestTemplate的Bean
》利用RestTemplate調(diào)用
技巧01:遠(yuǎn)程服務(wù)的信息直接利用遠(yuǎn)程服務(wù)的應(yīng)用名代替,應(yīng)用名就是spring.application.name的值
5.4 通過消費(fèi)者服務(wù)調(diào)用遠(yuǎn)程資源測(cè)試
技巧01:ribbon默認(rèn)使用輪詢來實(shí)現(xiàn)負(fù)載均衡功能
?
6 利用 Feign 實(shí)現(xiàn)
技巧01:feign默認(rèn)集成了ribbon
技巧02:在需要使用feign的服務(wù)中需要引入feign依賴并在啟動(dòng)類上添加@EnableFeignClients注解
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>6.1?創(chuàng)建遠(yuǎn)程服務(wù)Restful API
請(qǐng)參見5.1
6.2 編寫遠(yuǎn)程調(diào)用接口
6.3 編寫遠(yuǎn)程調(diào)用的控制層
6.4?通過消費(fèi)者服務(wù)調(diào)用遠(yuǎn)程資源測(cè)試
? 6.5 熔斷
參考博文
7 本博文源代碼
點(diǎn)擊前往
轉(zhuǎn)載于:https://www.cnblogs.com/NeverCtrl-C/p/9537751.html
總結(jié)
以上是生活随笔為你收集整理的SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Reading SBAR SDN flo
- 下一篇: spring(三)-事务管理