SpringCloud簡介
Spring Cloud是Spring旗下的專案之一
Spring Cloud并不是一個組件 而是許多組件的集合
其將當下非常流行的一些技術整合到了一起 實作了多個分布式開發中的重要功能
協調了分布式環境中各個系統 并且為各類服務提供模板性的配置
其主要涉及的組件包括:
- Eureka:注冊中心
- Zuul或Spring Cloud Gateway:服務網關
- Ribbon:負載均衡
- Feign:服務呼叫
- Hystrix或Resilience4j:熔斷器
【在本篇中 將介紹Ribbon負載均衡】
Ribbon負載均衡
負載均衡 顧名思義 就是讓服務的負載更加均衡的…(廢話)
在實際環境中往往會開啟很多個服務端的集群 此時獲取的服務串列中就會有多個
此時 到底該訪問哪一個 一般在這種情況下就需要撰寫負載均衡演算法 在多個實體串列中選擇最優的
Eureka中已經集成了負載均衡組件:Ribbon 只需簡單修改代碼即可使用
Ribbon是一個負載均衡器 有助于控制HTTP和TCP客戶端的行為
為Ribbon配置服務提供者串列后 Ribbon可基于某種負載均衡演算法 自動地幫助服務消費者去進行請求
Ribbon默認提供了很多的負載均衡演算法 例如輪詢演算法 隨機演算法 等等
輪詢演算法即為輪著進行 例如共有AB兩個服務提供者 那么第一次訪問A服務提供者 則第二次必定訪問B服務提供者 第三次訪問A服務提供者 以此類推
隨機演算法顧名思義 是隨機的
當然 也可為Ribbon實作自定義的負載均衡演算法
Ribbon默認使用輪詢演算法
在匯入Eureka客戶端的依賴包的時候同時也自動匯入了Ribbon的相關包:

一、負載均衡的程序:
在執行RestTemplate發送地址請求的時候 會使用Ribbon負載均衡器進行攔截 然后根據服務名獲取服務地址串列
再使用Ribbon的負載均衡演算法從服務地址串列中選擇一個服務地址 最后 訪問該服務地址 獲取資料
二、使用步驟:
為服務消費者的啟動類中的RestTemplate實體化方法添加@LoadBalanced注解以開啟客戶端負載均衡功能:
// 注冊RestTemplate
@Bean
@LoadBalanced
public RestTemplate restTemplate()
{
return new RestTemplate();
}
使用步驟很簡單
在服務消費者的介面類中 直接使用服務名來進行負載均衡即可:
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/{id}")
public User queryById(@PathVariable Long id)
{
// Ribbon負載均衡
String url="http://user-service/user/"+id;
return restTemplate.getForObject(url,User.class);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/104635.html
標籤:其他
