SpringCloud Ribbon的基本使用
阿新 • • 發佈:2019-01-27
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、啟動服務消費者,檢視註冊中心