什麼是 Ribbon?什麼是負載均衡?怎麼用Ribbon
Srping Cloud Ribbon 是基於 Netflix Ribbon實現的一套 客戶端 負載均衡的工具。
簡甲的說,Ribbon是Netflix釋出的開源頂目,主要功能是提供客戶端的軟體負均衡演算法,將Netflix的中間層服務連線在一起。Ribbon窖戶端元件提供一系列完善配置項如連線超時,重試等。簡軍的說,就是在配置檔案中列出LoadBalancer〔簡稱LB)後面所有的機器,Ribbon會自動的幫助你基於某種規則(筒單輪洵,隨機連線等)去連線這些機器。我們也很容易使Ribbon實現自定義負載均衡演算法·
什麼是LoadBalancer?
LB,即負載均衡(L。adBalance),在微服務或分散式叢集中經常比的一種應用·
負載均衡簡單的說就是將使用者的滿求平灘的分配到多個務上,從而達到系統的HA。
常見的負載均衡有件Nginx,CVS,硬體F5等·
相應的在中介軟體,例如:dubbo和SpringCIoud中均給我們供了負載均衡。springcloud的負載均衡演算法可以自定義。
集中式LB
即在服務的消費方和提供方之間使用獨立的LB設施(可以是硬體,如F5,也可以是軟體,如nginx),由該設施負責把訪問請求通過某種策略轉發至服務的提供方。
程序內LB
將LB邏輯整合到消費方,消費方從服務註冊中心獲知有哪些地址可用,然後自己再從這些地址中選擇一個合適的伺服器。
Ribbon就屬於程序內LB,它是一個類庫,整合與消費方程序,消費方通過它來獲取到伺服器提供方的地址。
Ribbon怎麼使用?
第一步 在maven中配置需要的包 ,版本在父類中已經配置過
<!-- Ribbon相關 -->
<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>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
第二步修改springboot的配置檔案 (yml格式)
eureka:
client:
register-with-eureka: false #不註冊自己
service-url:
defaultZone:http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
第三部在我們的消費者端加入@LoadBalanced註解即可
package com.atguigu.springcloud.cfgbean;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ConfigBean {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
第四主啟動類加入註解
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class DeptConsumer80_App {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer80_App.class, args);
}
}
大功告成。
有興趣的小夥伴可以加我QQ一起學習,目前還是在校生