「 從0到1學習微服務SpringCloud 」01 一塊兒來學呀! 「 從0到1學習微服務SpringCloud 」02 Eureka服務註冊與發現
「 從0到1學習微服務SpringCloud 」03 Eureka的自我保護機制
「 從0到1學習微服務SpringCloud 」04服務消費者Ribbon+RestTemplatespring
Feign是一個聲明式的僞Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只須要建立一個接口並註解。Feign默認集成了Ribbon,並和Eureka結合,默認實現了負載均衡的效果。瀏覽器
繼續用上節的工程, 啓動eureka-server,端口爲8761;啓動service-hi 兩次,端口分別爲8762 、8863app
繼續使用上節的eureka-client工程
1.加入Fegin依賴負載均衡
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2.在啓動類加上@EnableFeignClients註解,開啓Feign的功能微服務
@SpringBootApplication @EnableEurekaClient //加下面這個 @EnableFeignClients public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } }
3.定義一個feign接口,經過@ FeignClient(「服務名」),來指定調用哪一個服務
好比在代碼中調用了service-hi服務的「/hi」接口,代碼以下:學習
@FeignClient("service-hi") public interface FeginClient { //service-hi服務中名字爲"hi"的接口 @GetMapping("hi") String sayHi(); }
4.在controller層,對外暴露一個"hiFromFegin"的API接口,經過上面定義的Feign客戶端sayHi 來消費服務spa
//編譯器報錯,無視。 //由於這個Bean是在程序啓動的時候注入的,編譯器感知不到,因此報錯。 @Autowired private FeginClient feginClient; @GetMapping("hiFromFegin") public String hiFromFegin() { return feginClient.sayHi(); }
5.啓動程序,屢次訪問http://localhost:8861/hiFromFegin
,瀏覽器交替顯示3d
hi!i am come from 8862hi! i am come from 8863
至此,使用Feign消費服務已實現,Feign內置ribbon,帶負載均衡的效果rest
1.聲明式的REST客戶端,經過編寫簡單的接口和插入註解,只須要像調用本地方法同樣調用它就能夠完成服務請求及相關處理,使REST調用更加簡單code
若使用RestTemplate,則須要深刻了解HTTP級別API的細節。
2.內置Ribbon,配合Eureka實現負載均衡
若是以爲不錯,分享給你的朋友!
THANDKS
一個立志成大腿而天天努力奮鬥的年輕人
伴學習伴成長,成長之路你並不孤單!