1. 程式人生 > >SpringCloud Ribbon的基本使用

SpringCloud Ribbon的基本使用

aRibbon是什麼?

Ribbon是Netflix釋出的雲中間層服務開源專案,主要功能是提供客戶端負載均衡演算法。Ribbon客戶端元件提供一系列完善的配置項,如,連線超時,重試等。簡單的說,Ribbon是一個客戶端負載均衡器,我們可以在配置檔案中列出load Balancer後面所有的機器,Ribbon會自動的幫助你基於某種規則(如簡單輪詢,隨機連線等)去連線這些機器,我們也很容易使用Ribbon實現自定義的負載均衡演算法。

Eureka使用Ribbon是在架構:

這裡寫圖片描述

Ribbon第一步選擇Eureka Server,它優先選擇在同一個Zone且負載較少的Server,第二步再根據使用者指定的策略,在從Server取到的服務註冊列表中選擇一個地址。Ribbon提供了多種策略,例如:輪詢 round robin、隨機Random、根據響應時間加權等。

使用Ribbon實現客戶端負載均衡的服務消費者

準備服務消費者:

這裡寫圖片描述

1、新增Ribbon的maven依賴

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependency> <groupId>org.springframework.cloud</groupId
>
<artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency>

2、application.properties 配置項

server.port=8012

spring.application.name=user-client
eureka.client.serviceUrl.defaultZone=http://192.168.1.12:8761/eureka/

3、新增@EnableDiscoveryClient註解,以及@LoadBalanced

這裡寫圖片描述

4、編寫UserClientController.java

@RestController
public class UserClientController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/register")
    public String register(){

        String tenantCode = "T-0001"; 
        String userName = "tom";
        String mobileNumber = ""; 
        String email = "";
        String password = "123456";

        String url = "http://user-server/user-server/registerUser";
        String request = "";

        // 此方法有問題,待解決
        restTemplate.postForLocation(url, request, tenantCode, userName, mobileNumber, email, password);

        return "ok";
    }
}

這裡寫圖片描述

5、啟動服務消費者,檢視註冊中心

這裡寫圖片描述