之間通過幾篇文章簡單介紹的eureka的使用及相關的知識,
今天開始主要講解分佈式系統框架中的另一重要構成:負載均衡
什麼是負載均衡:
摺疊負載均衡(LoadBalance)提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。是集羣技術(Cluster)的一種應用,可以將工作任務分攤到多個處理單元,從而提高併發處理能力。
熟悉的分佈式負載均衡的實現方式大概包括以下幾種:
nginx\lvs\ribbon
負載均衡的策略:
- 輪詢 :依次發送請求到後端服務
- 權重:根據權重配置分發請求,服務器性能好的可以權重大一些
- IP哈希:根據算法確定請求服務器,同一個地址的客戶端,始終請求同一臺主機
- 最少訪問:負載均衡器把請求給負載最小的哪臺服務器
我們主要介紹的就是springcloud全家桶中的ribbon,因爲目前的開發框架中,spring已經成爲了必不可少的主力軍,而作爲全家桶中的一份子,無疑的ribbon是可以很好的接入到spring框架中的。下面我們開始今天的內容:
Ribbon是什麼?
- 一款客戶端的負載均衡工具
- 主要功能:提供客戶端的負載均衡算法,提供一系列完整的配置:連接超時,重試等,簡單的說就是在配置文件中列出LB(負載均衡)後面的所有機制,ribbon會自動的根據某種規則(隨機、輪詢… …)去連接機器
- 我們也可以實現自定義的負載均衡的算法
Ribbon集成
1)目錄結構:
ribbon作爲客戶端的實現,所以我們只需要修改80項目即可
2)修改pom.xml
<!-- 添加依賴 -->
<!-- Eureka依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- Ribbon依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
3)修改application.yml
#Eureka 配置
eureka:
client:
register-with-eureka: false #不向服務器註冊自己
service-url:
defaultZone: http://eurekaServer7001.com:7001/eureka/,http://eurekaServer7002.com:7002/eureka/
4)啓動類開啓eureka
@EnableEurekaClient
public class ConApplication {
- 配置Ribbon負載均衡,修改配置類
@Configuration
public class BeanConfig {
//配置RestTemplate爲負載均衡Ribbon
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
6)修改請求方式
//private static final String rest_url = "http://localhost:8081";
//ribbon實現,請求地址應該是一個變量,及我們註冊eureka的服務名稱
private static final String rest_url = "http://peo8081";
至此,ribbon負載均衡(默認策略)就集成成功