7.ribbon

一、簡述

客戶端的負載均衡(寫在客戶端服務消費者中)。內帶一些負載均衡算法,在springcloud中可以自定義算法。

二、配置ribbon負載均衡

這裏主要思路就是使客戶端鏈接eureka發現服務,通過eureka中的服務名稱調用算法來訪問實際服務ip地址。

1.搭建服務提供者集羣

把前面microservice-provider1001服務複製多份,分別爲:
microservice-provider1002、microservice-provider1003
注意:服務端口、數據庫配置等可以做相應修改,但是服務名稱不可以修改

2.添加ribbon依賴

ribbon是放在消費者那端的,這裏在microservice-consumer8080配置,添加依賴如下:

<!-- 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>

3.配置服務發現

添加eureka配置:

eureka:
  register-with-eureka: false
  client:
    service-url:
      defaultZone: http://eureka2001.com:2001/eureka/,http://eureka2002.com:2002/eureka/,http://eureka2003.com:2003/eureka/

啓動類添加註解:

@EnableEurekaClient

4.配置ribbon

負載均衡實際是根據RestTemplate根據均衡算法進行調度不同地址上的同一個微服務的部署。所以修改ConfigBean,在RestTemplate上加@LoadBalanced註解。

@SpringBootApplication
@EnableEurekaClient
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

修改controller層,不再通過地址和端口調取其它微服的應用,而是根據微服務的名來調取應用。

//	private final String REST_URI="http://localhost:1001/users";
	private final String REST_URI="http://microservicecloud-provider:1001/users";
	

5.測試


測試成功,目前爲默認的輪詢規則

6.修改ribbon自帶算法

在ConfigBean中添加:

@Bean
	public IRule myRule(){
		return new RandomRule();
	}

測試成功,該策略爲隨機策略

7.自定義ribbon策略

在啓動類上使用@RibbonClient(name = “”,configuration = xxx.class)該註解
其中name屬性值是需要負載均衡的某一服務
configuration屬性值是自己定義的規則類,該類不能被spring自動生成,既不能被@ComponentScan掃描到。該類定義可以仿照RandomRule類構建。
最後在ConfigBean中引用自己的類。

@Bean
	public IRule myRule(){
		return new MyRule();
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章