【SpringCloud】(六):Ribbon實現客戶端負載均衡
前面文章中已經將服務註冊到了Eureka,但是還沒有解決請求地址硬編碼和負載均衡的問題。
這邊文章,我們講述使用Ribbon完成請求以及負載均衡。讓電影微服務呼叫使用者微服務的時候,解決請求地址和埠的硬編碼
實現負載均衡
1.伺服器端負載均衡:使用Nginx,由Nginx完成反向代理,實現負載均衡。
2.客戶端負載均衡:電影微服務中有某個元件(Ribbon),可以知道有多少個可用的使用者微服務的IP和埠,在元件中完成負載均衡演算法。
Ribbon實現客戶端負載均衡。
http://cloud.spring.io/spring-cloud-static/Camden.SR7/#netflix-ribbon-starter
Client Side Load Balancer: Ribbon
Ribbon 工作分為2步:
1.選擇Eureka Server,優先選擇在同一Zone且負載較少的Server.
2.根據使用者指定的策略,在從Server取到的服務註冊列表中選擇一個地址。
策略包括:輪詢,隨機,響應時間加權。
1.加入依賴
在Spring-cloud-start-Eureka的依賴中已經依賴了spring-cloud-starter-ribbon.所以不用新增依賴
2.使用註解@LoadBalanced
程式碼實現:
只需要修改電影微服務即可。
我們通過拷貝,修改前面程式碼的電影微服務。重新建立了一個電影微服務:microservice-comsumer-movie-ribbon
1.主要是在RestTemplate上加入了@LoadBalanced,讓restTemplate具備Ribbon負載均衡的能力。
啟動類:
package com.dynamic.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableEurekaClient
public class ComsumerMovieRibbonApplication {
@Bean
@LoadBalanced//讓restTemplate具備Ribbon負載均衡的能力。
public RestTemplate restTemplate()
{
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ComsumerMovieRibbonApplication.class, args);
}
}
2.修改MovieController中的使用者微服務地址,修改硬編碼為Eureka上註冊的服務的ServicId,即使用者微服務的application.name;
package com.dynamic.cloud.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.dynamic.cloud.entity.User;
@RestController
public class MovieController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/movie/{id}")
public User findById(@PathVariable Long id)
{
//http://localhost:7900/simple/
//VIP Virtual IP:虛擬IP,使用的是服務提供者的ServiceId,也就是application.name
//HAProxy HeartBeat
//microservice-provider-user:7900
return this.restTemplate.getForObject("http://microservice-provider-user/simple/"+id, User.class);
}
}
3.application.yml
server:
port: 7902
spring:
application:
name: microservice-comsumer-movie-ribbon
eureka:
client:
serviceUrl:
defaultZone: http://user:pass123@localhost:8761/eureka
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
啟動Eureka,電影微服務,2個使用者微服務。
實現了客戶端負載均衡。
相關文章
- SpringCloud客戶端負載均衡——RibbonSpringGCCloud客戶端負載
- SpringCloud 客戶端負載均衡:RibbonSpringGCCloud客戶端負載
- ③SpringCloud 實戰:使用 Ribbon 客戶端負載均衡SpringGCCloud客戶端負載
- SpringCloud系列之客戶端負載均衡Netflix RibbonSpringGCCloud客戶端負載
- Spring Cloud Ribbon 客戶端負載均衡SpringCloud客戶端負載
- Spring Cloud入門教程-Ribbon實現客戶端負載均衡SpringCloud客戶端負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- SpringCloud Fegin結合Ribbon實現負載均衡SpringGCCloud負載
- SpringCloud微服務系列(4): 服務發現與消費及客戶端負載均衡RibbonSpringGCCloud微服務客戶端負載
- 客戶端負載均衡配置客戶端負載
- Ribbon實現負載均衡負載
- 【SpringCloud】之Ribbon負載均衡SpringGCCloud負載
- 微服務架構如何實現客戶端負載均衡微服務架構客戶端負載
- Spring cloud客戶端負載均衡與ribbon的設計思路SpringCloud客戶端負載
- SpringCloud(第 006 篇)電影微服務,使用 Ribbon 在客戶端進行負載均衡SpringGCCloud微服務客戶端負載
- Oracle RAC 客戶端負載均衡配置Oracle客戶端負載
- SpringCloud微服務中使用RestTemplate+Ribbon實現負載均衡(實現方法+實現原理+替換負載均衡策略)SpringGCCloud微服務REST負載
- SpringCloud入門(四)Ribbon負載均衡SpringGCCloud負載
- spring cloud 上雲的情況下,Ribbon 客戶端負載均衡 與 ALB 服務端負載均衡的選擇SpringCloud客戶端負載服務端
- 負載均衡---ribbon負載
- (20)SpringCloud-Ribbon自定義負載均衡策略SpringGCCloud負載
- SpringCloud學習筆記:負載均衡Ribbon(3)SpringGCCloud筆記負載
- 客服端負載均衡:Spring Cloud Ribbon負載SpringCloud
- SpringCloud 服務負載均衡和呼叫 Ribbon、OpenFeignSpringGCCloud負載
- RocketMQ 客戶端負載均衡機制詳解及最佳實踐MQ客戶端負載
- Spring Cloud Netflix—客戶端負載平衡器:RibbonSpringCloud客戶端負載
- openGauss JDBC客戶端負載均衡與讀寫分離JDBC客戶端負載
- Spring Cloud:使用Ribbon實現負載均衡詳解(上)SpringCloud負載
- Spring Cloud:使用Ribbon實現負載均衡詳解(下)SpringCloud負載
- Spring Cloud Ribbon負載均衡SpringCloud負載
- Ribbon負載均衡 (原始碼分析)負載原始碼
- SpringCloud(第 007 篇)電影微服務,使用定製化 Ribbon 在客戶端進行負載均衡不同服務不同配置策SpringGCCloud微服務客戶端負載
- 六種實現負載均衡技術的方式負載
- (23)go-micro微服務客戶端開發(使用負載均衡)Go微服務客戶端負載
- SpringCloud微服務實戰——搭建企業級開發框架(十二):OpenFeign+Ribbon實現負載均衡SpringGCCloud微服務框架負載
- mysqlslap 負載模擬客戶端MySql負載客戶端
- 微服務負載均衡器 Ribbon微服務負載
- (4)什麼是Ribbon負載均衡負載