微服務調用介紹,微服務之間的調用
一,SpringCloud微服務之間調用的方式有那些?
在SpringCloud中實現微服務調用的方式有Ribbon、Feign兩種,他們實現軟負載均衡調用。
Ribbon是一個基於 HTTP 和 TCP 客戶端 的負載均衡的工具。可以在客戶端配置 RibbonServerList(服務端列表),使用 HttpClient 或 RestTemplate 模擬http請求。Feign默認集成了Ribbon,是在 Ribbon的基礎上進行了一次改進,使用起來更加方便。采用接口的方式, 只需要創建一個接口,然后在上面添加注解即可 ,將需要調用的其他服務的方法定義成抽象方法即可, 不需要自己構建http請求。
1,Ribbon調用服務實現
這里我拿custmer作為服務提供者,order作為服務調用(消費者)方。當調用order模塊的接口時,需要從customer獲取對應的信息。
1),調用者(order-service)啟動類更改。
2),服務提供者(customer-service)接口提供
3),服務調用實現
2,Feign調用服務實現
Feign屬於SpringCloud中常用的服務調用方式。Feign調用啟動類不需要@Bean和@LoadBalanced注解部分。服務調用者啟動類如下:
1),添加提供者接口
2),在消費端添加FeignClient接口服務
在集成hystrix前fallback可以不配,我這里配的fallback類如下:
3),服務調用實現
二,實際項目中Feign和Ribbon怎么選擇?
在實際項目中,到底用Feign還是Ribbon實現調用呢?這個只要掌握區別的你就清楚了。答案肯定是選擇feign。
理由:feign默認集成了ribbon,寫起來更加思路清晰和方便。它還采用注解方式進行配置,配置熔斷等方式方便。
三,什么是Hystrix,它能干什么?
在分布式環境中,有很多微服務的情況下,不可避免會有一些服務依賴項失敗。Hystrix是一個庫,通過添加延遲容忍和容錯邏輯,幫助您控制這些分布式服務之間的交互。Hystrix通過隔離服務之間的訪問點、停止跨服務的級聯故障並提供回退選項來實現這一點,所有這些都可以提高系統的總體彈性。它的作用:
-
保護和控制調用第三方客戶端庫的依賴(通常是通過網絡)的延遲和失敗。
-
防止復雜分布式系統中的級聯故障。
-
快速失敗和快速恢復。
-
回退(配置回退方法)並盡可能優雅降級。
-
啟用近實時監視、警報和操作控制。
四,Feign中如何使用熔斷器Hystrix?
Feign在整合到Spring Cloud時已經自帶了hystrix模塊,所以pom.xml中不需要額外引入feign依賴。現在服務調用者(order-service)里開啟熔斷。
FeignClient服務:
熔斷的fallback:
提供服務接口:
測試Controller:
啟動服務測試:
服務正常,能從提供者服務中獲取信息。
那我們在測試下熔斷的效果,在修改提供者接口如下:
重啟提供者服務,然后測試:
此刻,我們發現沒有獲取提供者信息。看看調用者服務日志
轉載至該博客 https://www.cnblogs.com/lyn20141231/p/12761409.html