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