国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Dubbo負載均衡策略

這篇具有很好參考價值的文章主要介紹了Dubbo負載均衡策略。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Dubbo負載均衡策略

在Dubbo中,負載均衡是實現(xiàn)高可用和高性能的重要手段之一。Dubbo支持多種負載均衡策略,可以根據(jù)業(yè)務場景進行選擇。本文將詳細介紹Dubbo支持的負載均衡策略,并結合代碼實踐給出操作步驟。

Dubbo負載均衡策略

Dubbo支持以下負載均衡策略:

  • 隨機(Random):隨機選擇一個可用的服務提供者。
  • 最少活躍數(shù)(LeastActive):選擇活躍數(shù)最少的服務提供者,即處理請求最少的服務提供者。
  • 一致性哈希(ConsistentHash):根據(jù)請求參數(shù)的hash值,按照順時針方向路由到相鄰節(jié)點。
  • 輪詢(RoundRobin):按公平輪詢的方式選擇服務提供者。
  • 加權輪詢(WeightedRoundRobin):按照服務提供者的權重進行輪詢,權重越大被選中的概率越高。
  • 加權隨機(WeightedRandom):根據(jù)權重隨機選擇服務提供者。

其中,隨機、最少活躍數(shù)、一致性哈希、輪詢是Dubbo自帶的負載均衡策略,加權輪詢和加權隨機是Dubbo的擴展負載均衡策略。

操作步驟

1. 環(huán)境準備

本文以Spring Boot為例,首先需要新建一個Spring Boot項目。在pom.xml文件中添加以下依賴:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>x.x.x</version>
</dependency>

其中,x.x.x為Dubbo的版本號。本文以2.7.6為例。

2. 配置提供者

在application.properties文件中配置服務提供者信息:

# 服務端口號
server.port=8080

# Dubbo應用名
dubbo.application.name=demo-provider

# 注冊中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

# 服務提供者協(xié)議
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

# 服務提供者接口類全限定名
dubbo.scan.base-packages=com.example.demo.service

# 服務提供者負載均衡策略
# 隨機(Random)、最少活躍數(shù)(LeastActive)、一致性哈希(ConsistentHash)、輪詢(RoundRobin)
# 加權輪詢(WeightedRoundRobin)、加權隨機(WeightedRandom)
dubbo.loadbalance=leastactive

其中,dubbo.loadbalance配置了服務提供者使用的負載均衡策略,本文以最少活躍數(shù)為例。

3. 編寫服務提供者接口與實現(xiàn)類

在com.example.demo.service包中新建一個DemoService接口和DemoServiceImpl實現(xiàn)類:

// DemoService.java
public interface DemoService {
    String sayHello(String name);
}

// DemoServiceImpl.java
@Service
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

4. 配置消費者

在application.properties文件中配置服務消費者信息:

# Dubbo應用名
dubbo.application.name=demo-consumer

# 注冊中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

# 服務消費者負載均衡策略
# 隨機(Random)、最少活躍數(shù)(LeastActive)、一致性哈希(ConsistentHash)、輪詢(RoundRobin)
# 加權輪詢(WeightedRoundRobin)、加權隨機(WeightedRandom)
dubbo.loadbalance=random

其中,dubbo.loadbalance配置了服務消費者使用的負載均衡策略,本文以隨機為例。

5. 編寫服務消費者代碼

在com.example.demo.controller包中新建一個DemoController控制器類:

@RestController
public class DemoController {
    @Reference(version = "1.0.0")
    private DemoService demoService;

    @GetMapping("/hello/{name}")
    public String sayHello(@PathVariable String name) {
        return demoService.sayHello(name);
    }
}

其中,@Reference注解用于引用Dubbo提供的服務,version參數(shù)指定服務版本號。

6. 運行項目

啟動Zookeeper服務器,并運行服務提供者和服務消費者。訪問http://localhost:8080/hello/world,可以看到服務消費者隨機選擇了一個服務提供者進行調用。如果將服務消費者的負載均衡策略改為leastactive,再次訪問http://localhost:8080/hello/world,可以發(fā)現(xiàn)服務消費者選擇了最少活躍數(shù)的服務提供者進行調用。其他負載均衡策略同理。

7. 擴展Dubbo負載均衡策略

除了Dubbo自帶的負載均衡策略之外,也可以擴展自定義的負載均衡策略。以加權隨機為例,我們在com.example.demo.loadbalance包中新建一個WeightedRandomLoadBalance類:

public class WeightedRandomLoadBalance extends RandomLoadBalance {
    public static final String NAME = "weightedrandom";

    @Override
    protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {
        int totalWeight = 0;
        boolean sameWeight = true;
        for (int i = 0; i < invokers.size(); i++) {
            int weight = invokers.get(i).getUrl().getMethodParameter(invocation.getMethodName(), "weight", 100);
            if (i == 0) {
                totalWeight = weight;
            } else {
                totalWeight += weight;
                sameWeight = sameWeight && (weight == invokers.get(i - 1).getUrl().getMethodParameter(invocation.getMethodName(), "weight", 100));
            }
        }

        if (totalWeight > 0 && !sameWeight) {
            int offset = ThreadLocalRandom.current().nextInt(totalWeight);
            for (Invoker<T> invoker : invokers) {
                int weight = invoker.getUrl().getMethodParameter(invocation.getMethodName(), "weight", 100);
                offset -= weight;
                if (offset < 0) {
                    return invoker;
                }
            }
        }
        return super.doSelect(invokers, url, invocation);
    }
}

該類繼承自RandomLoadBalance類,使用加權隨機的方式選擇服務提供者。其中,為了支持加權隨機,我們需要在服務提供者URL中添加weight參數(shù),表示該服務提供者的權重。

8. 配置擴展負載均衡策略

在application.properties文件中配置服務提供者和服務消費者使用的負載均衡策略:

# 服務提供者負載均衡策略
# 隨機(Random)、最少活躍數(shù)(LeastActive)、一致性哈希(ConsistentHash)、輪詢(RoundRobin)
# 加權輪詢(WeightedRoundRobin)、加權隨機(WeightedRandom)
dubbo.loadbalance=weightedrandom

# 服務消費者負載均衡策略
# 隨機(Random)、最少活躍數(shù)(LeastActive)、一致性哈希(ConsistentHash)、輪詢(RoundRobin)
# 加權輪詢(WeightedRoundRobin)、加權隨機(WeightedRandom)
dubbo.consumer.loadbalance=random

其中,dubbo.loadbalance配置了服務提供者使用的負載均衡策略,本文以加權隨機為例。dubbo.consumer.loadbalance配置了服務消費者使用的負載均衡策略,本文以隨機為例。

9. 運行項目

啟動Zookeeper服務器,并運行服務提供者和服務消費者。訪問http://localhost:8080/hello/world,可以看到服務消費者使用了加權隨機的方式選擇了一個服務提供者進行調用。

至此,我們完成了Dubbo負載均衡策略的介紹與實踐。文章來源地址http://www.zghlxwxcb.cn/news/detail-408300.html

到了這里,關于Dubbo負載均衡策略的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Dubbo 路由及負載均衡性能優(yōu)化

    Dubbo 路由及負載均衡性能優(yōu)化

    作者:vivo 互聯(lián)網(wǎng)中間件團隊- Wang Xiaochuang 本文主要介紹在vivo內部針對Dubbo路由模塊及負載均衡的一些優(yōu)化手段,主要是異步化+緩存,可減少在RPC調用過程中路由及負載均衡的CPU消耗,極大提升調用效率。 vivo內部Java技術棧業(yè)務使用的是Apache Dubbo框架,基于開源社區(qū)2.7.x版本

    2024年02月08日
    瀏覽(23)
  • 中間件(二)dubbo負載均衡介紹

    中間件(二)dubbo負載均衡介紹

    支持輪詢、隨機、一致性hash和最小活躍數(shù)等。 ① sequences:內部的序列計數(shù)器 ② 服務器接口方法權重一樣:(sequences+1)%服務器的數(shù)量=(決定調用)哪個服務器的服務。 ③ 服務器接口方法權重不一樣:找到最大權重(權重數(shù))%(sequences+1),然后找出權重比該取模后的值

    2024年02月12日
    瀏覽(21)
  • Dubbo的幾個負載均衡類--最短響應時間

    -----------------看過之前一致性哈希和最少活躍書的可以跳過-----------------? 鏈接在此:Dubbo的幾個負載均衡類--一致性哈希 Dubbo的幾個負載均衡類--最少活躍數(shù) Dubbo的幾個負載均衡類--輪詢 Dubbo的幾個負載均衡類--隨機 消費者發(fā)起調用過程中涉及如下幾步 1:接口調用,比如Demo

    2024年01月23日
    瀏覽(20)
  • 2.1: Dubbo的基本應用-負載均衡,集群容錯,服務降級

    官網(wǎng)地址: ?http://dubbo.apache.org/zh/docs/v2.7/user/examples/loadbalance/ 如果在消費端和服務端都配置了負載均衡策略, ? 以消費端為準。 這其中比較難理解的就是最少活躍調用數(shù)是如何進行統(tǒng)計的? 講道理 , ? 最少活躍數(shù)應該是在 服務提供者端 進行統(tǒng)計的, ? 服務提供者統(tǒng)計有

    2024年02月10日
    瀏覽(62)
  • nginx的各種負載均衡策略與各種負載均衡策略如何配置

    Nginx支持多種負載均衡策略,每種策略都有其特定的適用場景和配置方式。以下是一些常見的Nginx負載均衡策略及其配置方法: 這是Nginx的默認策略,每個請求按順序依次分發(fā)到不同的服務器上。 配置示例: 在輪詢的基礎上,為后端服務器分配不同的權重,權重越高,接收的

    2024年04月09日
    瀏覽(19)
  • dubbo源碼中設計模式——負載均衡中模版模式的應用

    dubbo源碼中設計模式——負載均衡中模版模式的應用

    在模板模式(Template Pattern)中,一個抽象類公開定義了執(zhí)行它的方法的方式/模板。它的子類可以按需要重寫方法實現(xiàn),但調用將以抽象類中定義的方式進行。這種類型的設計模式屬于行為型模式。 使用場景:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板

    2024年02月19日
    瀏覽(26)
  • SpringCloud(3) Ribbon負載均衡,負載均衡策略,自定義負載均衡

    SpringCloud(3) Ribbon負載均衡,負載均衡策略,自定義負載均衡

    假設我們有一臺 order-service 訂單服務,兩臺 user-service 用戶服務,當訂單服務需要調用用戶服務獲取用戶信息的時候,應該怎么分配調用哪臺服務呢? 這時候就需要用到 Ribbon 組件了。 首先,我們發(fā)起遠程調用的時候,指定的是需要調用的服務名稱,然后我們會調用 Ribbon 組

    2024年02月11日
    瀏覽(24)
  • 負載均衡策略 LVS

    負載均衡策略 LVS

    (1) 概念: LB:負載均衡 (Load Balancing) 是一種分發(fā)網(wǎng)絡流量的技術,LB 負載均衡的基本原理是將傳入的網(wǎng)絡流量分發(fā)到多個后端服務器,以確保這些服務器都承擔相似的工作負載,從而避免某一臺服務器過載而其他服務器處于空閑狀態(tài)。 (2) 負載均衡產品分類: ① 軟件負載均

    2024年02月08日
    瀏覽(14)
  • gateway網(wǎng)關負載均衡策略

    gateway網(wǎng)關負載均衡策略

    前言? 之前作業(yè)是使用 nacos注冊中心來搭建有一個微服務,消費者必然要用到gateway網(wǎng)關來操作路由,并且配置負載均衡策略。 搭建微服務-文章鏈接:快速搭建微服務-Nacos_一碼超人的博客-CSDN博客_微服務搭建nacos ?添加一個gateway模塊 ?配置文件application.yml ?訪問服務:http:

    2024年02月12日
    瀏覽(14)
  • nginx負載均衡的策略

    本文同步發(fā)布于?http://laowubiji.com/index.php/2023/02/01/nginx_config/ nginx的負載均衡策略有六種: 1、輪詢(默認策略,nginx自帶策略):我上面的例子就是輪詢的方式,它是upstream模塊默認的負載均衡默認策略。會將每個請求按時間順序分配到不同的后端服務器。 2、weight(權重,n

    2024年02月11日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包