最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解

 更新時(shí)間:2023年08月15日 09:00:56   作者:SSS_HuLiang  
這篇文章主要介紹了Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解,負(fù)載均衡,其含義就是指將負(fù)載進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行,例如FTP服務(wù)器、Web服務(wù)器、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等,從而協(xié)同完成工作任務(wù),需要的朋友可以參考下

負(fù)載均衡

首先了解一下負(fù)載均衡。

百度百科:

負(fù)載均衡,英文名稱為Load Balance,其含義就是指將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行,例如FTP服務(wù)器、Web服務(wù)器、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等,從而協(xié)同完成工作任務(wù)。

個(gè)人理解,負(fù)載均衡,顧名思義,就是讓硬件或服務(wù),所受的負(fù)載,盡量均衡一點(diǎn)。

物盡其用,如250G固態(tài)硬盤和1T機(jī)械硬盤。

作為系統(tǒng)盤,則選擇用250G的固態(tài),讀取和寫入的速度塊。

有很多學(xué)習(xí)資源要存,容量較大,那么就會(huì)1T的機(jī)械硬盤。

擇優(yōu)選擇,打疫苗時(shí),A,B,C三個(gè)醫(yī)院,A醫(yī)院爆滿,C醫(yī)院人數(shù)較少,那么就去C醫(yī)院。

Dubbo四種負(fù)載均衡

  1. 隨機(jī)權(quán)重(Random LoadBalance)
    • dubbo默認(rèn) A:權(quán)重40  占比2/5 B:權(quán)重20  占比1/5 C:權(quán)重40  占比2/5 則每次請(qǐng)求,都是隨機(jī)訪問的,可能A,可能B,可能C。數(shù)據(jù)量大的情況下,就會(huì)形成權(quán)重的比例。
  2. 輪詢(RoundRobin LoadBalance)
    • 輪循,按公約后的權(quán)重設(shè)置輪循比率。(可以根據(jù)權(quán)重輪詢,如2/5,1/5,2/5。5個(gè)請(qǐng)求,則 A-B-C-A-C)無權(quán)重則A-B-C-A-B-C.... 存在慢的提供者累積請(qǐng)求的問題,比如:第二臺(tái)機(jī)器很慢,但沒掛,當(dāng)請(qǐng)求調(diào)到第二臺(tái)時(shí)就卡在那,久而久之,所有請(qǐng)求都卡在調(diào)到第二臺(tái)上。
  3. 最少活躍調(diào)用數(shù)(LeastActive LoadBalance)
    • 最少活躍調(diào)用數(shù),相同活躍數(shù)的隨機(jī),活躍數(shù)指調(diào)用前后計(jì)數(shù)差。 使慢的提供者收到更少請(qǐng)求,因?yàn)樵铰奶峁┱叩恼{(diào)用前后計(jì)數(shù)差會(huì)越大。 A:200ms B:200ms C:300ms 先看一下上次調(diào)用時(shí)間,請(qǐng)求優(yōu)先調(diào)用A和B,隨機(jī)選擇。統(tǒng)計(jì)上一次的調(diào)用時(shí)間
  4. 一致性hash(ConsistentHash LoadBalance)
    • 一致性 Hash,相同參數(shù)的請(qǐng)求總是發(fā)到同一提供者。 當(dāng)某一臺(tái)提供者掛時(shí),原本發(fā)往該提供者的請(qǐng)求,基于虛擬節(jié)點(diǎn),平攤到其它提供者,不會(huì)引起劇烈變動(dòng)。 算法參見://en.wikipedia.org/wiki/Consistent_hashing 缺省只對(duì)第一個(gè)參數(shù) Hash,如果要修改,請(qǐng)配置 <dubbo:parameter key="hash.arguments" value="0,1" /> 缺省用 160 份虛擬節(jié)點(diǎn),如果要修改,請(qǐng)配置 <dubbo:parameter key="hash.nodes" value="320" />

方法名,和第一個(gè)參數(shù)名,getUser?id=1,調(diào)用服務(wù)A,則下次同方法同參數(shù),會(huì)繼續(xù)調(diào)用服務(wù)A,除非服務(wù)A掛掉,那么就會(huì)根據(jù)虛擬節(jié)點(diǎn),平攤給其他服務(wù)提供者。算法處理。

個(gè)人理解的權(quán)重算法  

 /**
  * <h3>根據(jù)權(quán)重獲取對(duì)應(yīng)服務(wù),傳入服務(wù):權(quán)重map</h3>
  *
  * @param map 服務(wù):權(quán)重map
  * @return java.lang.String
  * @author Hubers 
  * @date 2021/6/15 16:16
  **/
 public static String getServerByWeight(Map<String, Integer> map) {
        if (map.isEmpty()){
            return null;
        }
        Integer total = 0;
        // 計(jì)算所有權(quán)重,如100+200+300=600
        for (Integer value : map.values()) {
            total += value;
        }
        Random random = new Random();
        // 在權(quán)重范圍內(nèi)隨機(jī),600以內(nèi)隨機(jī)
        int nextInt = random.nextInt(total);
        // 遍歷所有服務(wù)提供者provide的ip地址
        for (String ip : map.keySet()) {
            // 取出權(quán)重值
            Integer weight = map.get(ip);
            // 權(quán)重在范圍內(nèi),則返回對(duì)應(yīng)ip
            if (nextInt < weight) {
                return ip;
            }
            // 否則減去權(quán)重,繼續(xù)下一次循環(huán),匹配對(duì)應(yīng)的ip
            nextInt -= weight;
        }
        return null;
    }
public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("192.168.1.1", 10);
        map.put("192.168.1.2", 10);
        map.put("192.168.1.3", 10);
        map.put("192.168.1.4", 10);
        for (int i = 0; i < 10; i++) {
            String weight = getServerByWeight(map);
            if (Objects.isNull(weight)) {
                throw new RuntimeException("無可用服務(wù)");
            }
            System.out.println(weight);
        }
    }

到此這篇關(guān)于Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解的文章就介紹到這了,更多相關(guān)Java權(quán)重算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring4.3 實(shí)現(xiàn)跨域CORS的方法

    spring4.3 實(shí)現(xiàn)跨域CORS的方法

    下面小編就為大家分享一篇spring4.3 實(shí)現(xiàn)跨域CORS的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • SpringBoot異常處理器的使用與添加員工功能實(shí)現(xiàn)流程介紹

    SpringBoot異常處理器的使用與添加員工功能實(shí)現(xiàn)流程介紹

    設(shè)計(jì)完了登錄與退出功能還只完成了冰山一角,經(jīng)過測試發(fā)現(xiàn),我們以u(píng)rl的方式來訪問網(wǎng)站時(shí)可以直接跳過登陸頁面進(jìn)入后臺(tái)頁面,這樣顯然是不合理的,下面我們通過異常攔截器+boot來做到訪問限制,以及實(shí)現(xiàn)新增員工功能,制作全局異常處理器
    2022-10-10
  • springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證

    springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證

    本文主要介紹了springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),詳細(xì)的介紹了不加事務(wù)標(biāo)簽和加事物標(biāo)簽的使用,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 在Java中實(shí)現(xiàn)CQRS架構(gòu)的全過程

    在Java中實(shí)現(xiàn)CQRS架構(gòu)的全過程

    CQRS是Command?Query?Responsibility?Segregation的縮寫,一般稱作命令查詢職責(zé)分離,本文給大家介紹在Java中實(shí)現(xiàn)CQRS架構(gòu)的全過程,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 在Java中如何決定使用 HashMap 還是 TreeMap

    在Java中如何決定使用 HashMap 還是 TreeMap

    這篇文章主要介紹了在Java中如何決定使用 HashMap 還是 TreeMap,很多朋友對(duì)這樣的問題很迷茫,下面小編給大家?guī)硪黄恼聨椭蠹伊私?,需要的朋友可以參考?/div> 2019-10-10
  • Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行

    Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行

    這篇文章主要介紹了Springboot jar文件如何打包zip在linux環(huán)境運(yùn)行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Spring數(shù)據(jù)訪問模板化方法

    Spring數(shù)據(jù)訪問模板化方法

    今天小編就為大家分享一篇關(guān)于Spring數(shù)據(jù)訪問模板化,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 關(guān)于QueryWrapper高級(jí)使用示例

    關(guān)于QueryWrapper高級(jí)使用示例

    本文介紹了QueryWrapper的高級(jí)使用方法,包括查詢指定字段、使用MySQL函數(shù)處理字段、設(shè)置查詢限制等,通過select()可查詢指定字段并處理,last()方法實(shí)現(xiàn)limit效果,apply()可在查詢條件中使用函數(shù),這些技巧有助于提升數(shù)據(jù)庫操作的靈活性和效率
    2024-09-09
  • SpringBoot?+?Disruptor實(shí)現(xiàn)特快高并發(fā)處理及使用Disruptor高速實(shí)現(xiàn)隊(duì)列的過程

    SpringBoot?+?Disruptor實(shí)現(xiàn)特快高并發(fā)處理及使用Disruptor高速實(shí)現(xiàn)隊(duì)列的過程

    Disruptor是一個(gè)開源的Java框架,它被設(shè)計(jì)用于在生產(chǎn)者—消費(fèi)者(producer-consumer problem,簡稱PCP)問題上獲得盡量高的吞吐量(TPS)和盡量低的延遲,這篇文章主要介紹了SpringBoot?+?Disruptor?實(shí)現(xiàn)特快高并發(fā)處理,使用Disruptor高速實(shí)現(xiàn)隊(duì)列,需要的朋友可以參考下
    2023-11-11
  • Map按單個(gè)或多個(gè)Value排序當(dāng)Value相同時(shí)按Key排序

    Map按單個(gè)或多個(gè)Value排序當(dāng)Value相同時(shí)按Key排序

    Map可以先按照value進(jìn)行排序,然后按照key進(jìn)行排序。 或者先按照key進(jìn)行排序,然后按照value進(jìn)行排序,這樣操作都行,這篇文章主要介紹了Map按單個(gè)或多個(gè)Value排序,當(dāng)Value相同時(shí)按Key排序,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

宁乡县| 永吉县| 信丰县| 通城县| 平遥县| 邻水| 仪陇县| 南康市| 泗阳县| 响水县| 革吉县| 昭通市| 阳山县| 开远市| 海口市| 保定市| 阳高县| 宜春市| 八宿县| 犍为县| 眉山市| 金秀| 临泉县| 封丘县| 龙南县| 襄樊市| 淮滨县| 拉萨市| 巫溪县| 湖北省| 莱阳市| 合肥市| 建宁县| 津市市| 丹东市| 乌鲁木齐市| 商城县| 南和县| 渝中区| 新蔡县| 太白县|