1. 程式人生 > >【SpringCloud】06——Fegin服務間呼叫,負載均衡

【SpringCloud】06——Fegin服務間呼叫,負載均衡

1.什麼是Feign
Feign是一個宣告式的Web服務客戶端
使用:只需建立一個介面,然後在上面添加註解即可實現服務間呼叫,Feign是集成了Ribbon,也可實現負載均衡。

2.Feign 和Ribbon區別?
Ribbon
是一個基於 HTTP 和 TCP 客戶端的負載均衡器
它可以在客戶端配置 ribbonServerList(服務端列表),然後輪詢請求以實現均衡負載,Ribbon 是通過RestTemplate 模版拼接html進行呼叫。

@RestController
@Api(tags = {"部門表介面"})
@RequestMapping(value="/Dept")
public class DeptController_Consumer {

    //單機版
    // private static final String REST_URL_PREFIX="http://localhost:8001";

    //通過微服務名稱訪問微服務
    private static final String REST_URL_PREFIX="http://MICROSERVICECLOUD-DEPT8001";
    @Autowired
    private RestTemplate restTemplate;

    @PostMapping(value="/dept/add")
    public  boolean addDept(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,Boolean.class);
    }
}

Feign
feign本身裡面就包含有了ribbon。
Spring Cloud Netflix 的微服務都是以 HTTP 介面的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去呼叫,而 Feign 是一個使用起來更加方便的 HTTP 客戶端,使用起來就像是呼叫自身工程的方法,而感覺不到是呼叫遠端方法。Feign是通過介面實現服務間呼叫的。

@RestController
@Api(tags = {"部門表介面"})
@RequestMapping(value="/dept")
public class DeptController_Consumer {
    //面向介面程式設計
    @Autowired
    private DeptClientService deptClientService;

    @PostMapping(value="/add")
    public  boolean addDept(@RequestBody Dept dept){

        return deptClientService.addDept(dept);
    }
    }

3.Feign如何使用?
以做的一個專案為例:
https://blog.csdn.net/Sunny5319/article/details/82319587

感謝您的閱讀~~