spring cloud ribbon調用服務


Ribbon

Ribbon主要負責負載均衡調用,是基於Netflix Ribbon實現的一套客戶端。主要功能是提供客戶端的軟件負載均衡算法和服務調用。Ribbon會自動的幫助你基於某種規則去連這些機器。

簡單來說 ribbon = 負載均衡 + restTemplate

一、Ribbon本地負載均衡 與 Nginx服務端負載均衡 區別

Nginx是服務器負載均衡,集中式負載均衡,客戶端的所有請求都會交給nginx,然后由nginx實現轉發請求。即負載均衡是由服務端實現的。

Ribbon本地負載均衡,進行內負載均衡,在調用為服務接口的時候,會在注冊中心上獲取信息服務列表之后緩存到JVM本地,從而在本地實現RPC遠程服務調用技術。

二、Ribbon工作步驟

Ribbon在工作時分成兩步:

  • 第一步先選擇EurekaServer,它優先選擇在同一個區域內負載較少的server
  • 第二部再根據用戶指定的策略,從server取到的服務注冊列表中選擇一個地址。

Ribbon就是一個軟負載均衡的客戶端組件,它可以和其他所需請求的客戶端結合使用,和eureka結合只是其中的一個實例。

三、Ribbon調用服務

3.1、設置服務端集群:

eureka-client、eureka-client2

eureka-client2就是 eureka-client的復制版,注意端口號要更改。

在eureka-client中編寫controller,用於服務調用測試。

@RestController
public class ClientController {
    @Value("${server.port}")
    private String port;

    @ResponseBody
    @RequestMapping("/port")
    public String getPort(){
        return port;
    }
}

3.2、客戶端

3.2.1、編寫配置類

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

3.2.2、編寫controller

@RestController
public class ConsumerController {

    @Resource
    private RestTemplate restTemplate;

    private static final String URL = "http://EUREKA-CLIENT";

    @RequestMapping("/consumer/port")
    @ResponseBody
    public String getPort() {
        return restTemplate.getForObject(URL + "/port", String.class);
    }
}

4、測試

啟動eureka-server、eureka-client、eureka-client2、eureka-consumer。

訪問localhost:8001/port進行自測。

訪問localhost:8002/port進行自測。

自測成功后,不停訪問localhost:7001/consumer/port。


發現端口號會變更,說明Ribbon負載均衡已生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM