SpringCloud Feign 聲明式服務調用

 

服務調用有2種方式:REST、RPC,SpringCloud使用RestTemplate實現REST調用,此外SpringCloud還可以使用Feign進行聲明式服務調用,所謂聲明式就是通過服務接口來調用,和RPC相似。
 

服務消費者

feign是一種服務調用方式,自然是在消費者中使用的
 
1、創建時勾選Spring Cloud Routing -> OpenFeign,或者手動添加依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

 

2、引導類上加 @EnableFeignClients

在引導類上加@EnableXxx的,在啓動時會掃描相關注解

 

3、新建包feign用來存放feign服務調用的接口

@FeignClient("order-service")  //指定要調用的服務名稱。feign也內置了ribbon,會自動實現負載均衡
public interface OrderServiceFeign {

    @GetMapping("/api/v1/order/list/{user_id}")  //指定地址
    List<Order> findOrdersByUserId(@PathVariable("user_id") Integer userId); 

}

feign 僞裝、假裝,feign只是僞rpc調用,實際使用的還是REST,通過地址來調用,使用的協議還是HTTP。

 

4、service

@Service
public class UserService {

  @Autowired
    private OrderServiceFeign orderServiceFeign;  //注入要使用的Feign接口

    public List<Order> findOrdersById(Integer userId){
        //通過Feign接口進行服務調用
        return orderServiceFeign.findOrdersByUserId(userId);
    }

}

 

feign並沒有提高性能,實際使用的還是REST,與直接使用REST相比

  • Feign要將REST包裝爲Feign接口,有額外的開銷,拉低了性能
  • 服務接口變動時,只需修改feign包下的Feign接口,無需找到所有的REST服務調用進行修改,易於維護

Feign讓系統的升級維護變得方便

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章