首頁 > 軟體

Spring Cloud Alibaba負載均衡實現方式

2022-10-10 14:00:07

一、負載均衡的兩種方式

伺服器端負載均衡

傳統的方式前端傳送請求會到我們的的nginx上去,nginx作為反向代理,然後路由給後端的伺服器,由於負載均衡演演算法是nginx提供的,而nginx是部署到伺服器端的,所以這種方式又被稱為伺服器端負載均衡。

使用者端側負載均衡

現在有三個範例,內容中心可以通過discoveryClient 獲取到使用者中心的範例資訊,如果我們再訂單中心寫一個負載均衡的規則計算請求那個範例,交給restTemplate進行請求,這樣也可以實現負載均衡,這個演演算法裡面,負載均衡是有訂單中心提供的,而訂單中心相對於使用者中心是一個使用者端,所以這種方式又稱為使用者端負負載均衡。

二、手寫一個使用者端側負載均衡器

◆隨機選擇範例

@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/order/create")
public String createOrder(Integer productId,Integer userId){
    List<ServiceInstance> instances = discoveryClient.getInstances("msb-stock");
    List<String> targetUrls = instances.stream()
        // 資料變換
        .map(instance -> instance.getUri().toString() + "/stock/reduce")
        .collect(Collectors.toList());
    int i = ThreadLocalRandom.current().nextInt(targetUrls.size());
    String targetUrl = targetUrls.get(i);
    log.info("請求求目標地址:{}",targetUrl);
    String result = restTemplate.getForObject(targetUrl +"/"+ productId, String.class);
    log.info("進行減庫存:{}",result);
    return "下單成功";
}

三、使用Ribbon實現負載均衡

Ribbon是什麼? Netflix開源的使用者端側負載均衡器

更加直觀說就是ribbon就是簡化我們這段程式碼的小元件,不過他比我們的程式碼要強大一些,他給他們提供了豐富的負載均衡演演算法。

引入ribbon :三步驟: 加依賴,啟動註解,寫設定

不需要加,nacosdiscovery,已經給新增了依賴,

寫註解,需要寫到RestTemplate上面。

第三步:寫設定

沒有設定。

改造我們的請求:

url:改為 下面 當請求傳送的傳送的時候ribbon會將nx-us進行轉化為我們nacos裡面中的地址。並且進行負載均衡演演算法,進行請求,

以上就是Spring Cloud Alibaba負載均衡實現方式的詳細內容,更多關於Spring Cloud Alibaba負載均衡的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com