Spring Cloud Feign
Spring Cloud Feign是一套基于Netflix Feign實(shí)現(xiàn)的聲明式服務(wù)調(diào)用客戶端。它使得編寫(xiě)Web服務(wù)客戶端變得更加簡(jiǎn)單摘刑。我們只需要通過(guò)創(chuàng)建接口并用注解來(lái)配置它既可完成對(duì)Web服務(wù)接口的綁定裹芝。它具備可插拔的注解支持,包括Feign注解院促、JAX-RS注解筏养。它也支持可插拔的編碼器和解碼器斧抱。Spring Cloud Feign還擴(kuò)展了對(duì)Spring MVC注解的支持,同時(shí)還整合了Ribbon和Eureka來(lái)提供均衡負(fù)載的HTTP客戶端實(shí)現(xiàn)渐溶。
下面辉浦,我們通過(guò)一個(gè)例子來(lái)展現(xiàn)Feign如何方便的聲明對(duì)eureka-client服務(wù)的定義和調(diào)用。
下面的例子茎辐,我們將利用之前構(gòu)建的eureka-server作為服務(wù)注冊(cè)中心宪郊、eureka-client作為服務(wù)提供者作為基礎(chǔ)。而基于Spring Cloud Ribbon實(shí)現(xiàn)的消費(fèi)者荔茬,我們可以根據(jù)eureka-consumer實(shí)現(xiàn)的內(nèi)容進(jìn)行簡(jiǎn)單改在就能完成废膘,具體步驟如下:
根據(jù)eureka-consumer復(fù)制一個(gè)服務(wù)消費(fèi)者工程,命名為:eureka-consumer-feign慕蔚。在pom.xml中增加下面的依賴:
...
org.springframework.cloud
spring-cloud-starter-feign
修改應(yīng)用主類(lèi)丐黄。通過(guò)@EnableFeignClients注解開(kāi)啟掃描Spring Cloud Feign客戶端的功能:
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
publicclassApplication{
publicstaticvoidmain(String[] args){
newSpringApplicationBuilder(Application.class).web(true).run(args);
}
}
創(chuàng)建一個(gè)Feign的客戶端接口定義。使用@FeignClient注解來(lái)指定這個(gè)接口所要調(diào)用的服務(wù)名稱(chēng)孔飒,接口中定義的各個(gè)函數(shù)使用Spring MVC的注解就可以來(lái)綁定服務(wù)提供方的REST接口灌闺,比如下面就是綁定eureka-client服務(wù)的/dc接口的例子:
@FeignClient("eureka-client")
publicinterfaceDcClient{
@GetMapping("/dc")
Stringconsumer();
}
修改Controller。通過(guò)定義的feign客戶端來(lái)調(diào)用服務(wù)提供方的接口:
@RestController
publicclassDcController{
@Autowired
DcClient dcClient;
@GetMapping("/consumer")
publicStringdc(){
returndcClient.consumer();
}
}
通過(guò)Spring Cloud Feign來(lái)實(shí)現(xiàn)服務(wù)調(diào)用的方式更加簡(jiǎn)單了坏瞄,通過(guò)@FeignClient定義的接口來(lái)統(tǒng)一的生命我們需要依賴的微服務(wù)接口桂对。而在具體使用的時(shí)候就跟調(diào)用本地方法一點(diǎn)的進(jìn)行調(diào)用即可。由于Feign是基于Ribbon實(shí)現(xiàn)的鸠匀,所以它自帶了客戶端負(fù)載均衡功能蕉斜,也可以通過(guò)Ribbon的IRule進(jìn)行策略擴(kuò)展。另外缀棍,F(xiàn)eign還整合的Hystrix來(lái)實(shí)現(xiàn)服務(wù)的容錯(cuò)保護(hù)宅此,在Dalston版本中,F(xiàn)eign的Hystrix默認(rèn)是關(guān)閉的爬范。待后文介紹Hystrix帶領(lǐng)大家入門(mén)之后父腕,我們?cè)俳Y(jié)合介紹Feign中的Hystrix以及配置方式。
在完成了上面你的代碼編寫(xiě)之后青瀑,讀者可以將eureka-server璧亮、eureka-client、eureka-consumer-feign都啟動(dòng)起來(lái)斥难,來(lái)跟蹤觀察eureka-consumer-feign服務(wù)是如何消費(fèi)eureka-client服務(wù)的/dc接口的枝嘶,并且也可以通過(guò)啟動(dòng)多個(gè)eureka-client服務(wù)來(lái)觀察其負(fù)載均衡的效果。
從現(xiàn)在開(kāi)始蘸炸,我這邊會(huì)將近期研發(fā)的springcloud微服務(wù)云架構(gòu)的搭建過(guò)程和精髓記錄下來(lái)躬络,幫助更多有興趣研發(fā)spring cloud框架的朋友,希望可以幫助更多的好學(xué)者搭儒。大家來(lái)一起探討spring cloud架構(gòu)的搭建過(guò)程及如何運(yùn)用于企業(yè)項(xiàng)目穷当。源碼來(lái)源