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

SpringCloud LoadBalancer自定義負載均衡器使用解析

 更新時間:2023年04月17日 08:34:41   作者:程序員李哈  
LoadBalancerClient 是 SpringCloud 提供的一種負載均衡客戶端,Ribbon 負載均衡組件內部也是集成了 LoadBalancerClient 來實現負載均衡,本文給大家深入解析 LoadBalancerClient 接口源碼,感興趣的朋友跟隨小編一起看看吧

由于原有的負載均衡組件Ribbon停止維護,而完美的Spring生態(tài)怎能允許缺少負載均衡組件呢?Spring Cloud官方自己造出了Spring Cloud LoadBalancer來代替原有的Ribbon。由于是官方自己寫的組件,所以并沒有像eureka、Feign那樣抽出一個單獨的組件包出來。而放入到Spring Cloud Commons規(guī)范包中。

正文

Spring Cloud LoadBalancer 幫開發(fā)者已經實現了RoundRobinLoadBalancer、RandomLoadBalancer,分別是輪訓和隨機,默認實現為輪訓。

即讓是負載均衡組件,那必然有默認實現,也必然有擴展接口暴露給開發(fā)者。所以第一步肯定是介紹抽象接口。

// 負載均衡的標志性接口,繼承ReactorLoadBalancer接口
// 本接口無任何接口增強,僅僅作為一個標志性接口。
public interface ReactorServiceInstanceLoadBalancer extends ReactorLoadBalancer<ServiceInstance> 
// 在Spring Cloud高版本中大部分組件采用了Reacotr框架(有一說一,閱讀性極差?。。?
// 這里定義了一個選擇的抽象方法。
public interface ReactorLoadBalancer<T> extends ReactiveLoadBalancer<T> {
	Mono<Response<T>> choose(Request request);
	default Mono<Response<T>> choose() {
		return choose(REQUEST);
	}
}

這里有涉及到Reactor框架,不過完全可以當黑盒使用。接口非常的簡單就一個choose方法,所以接下來我們只需要實現此接口。

@LoadBalancerClient(value = "deptmanagecloud-provider", configuration = MyConfig.class)
public class MyConfig {
    // 配置負載均衡策略
    @Bean
    public ReactorLoadBalancer<ServiceInstance> myLB(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new MyLB(
                loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class));
    }
}

這里有部分邏輯,讀者完全可以當作黑盒暫時不需要去理解。只需要明白從注冊中心拿到注冊表以后會執(zhí)行getInstanceResponse方法,只需要實現自定義負載均衡策略的邏輯即可,好比我這里的邏輯是永遠只調用一個服務(當然,這完全扯淡,僅僅是Demo無須太關心)

既然我們把自定義負載均衡策略寫好了,那么,怎么告訴Spring呢?肯定需要注入給Spring。

@LoadBalancerClient(value = "deptmanagecloud-provider", configuration = MyConfig.class)
public class MyConfig {
    // 配置負載均衡策略
    @Bean
    public ReactorLoadBalancer<ServiceInstance> myLB(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new MyLB(
                loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class));
    }
}

這里需要?上@LoadBalancerClient注解,value為調用方的服務名,configuration為配置類

總結

相比以前的Ribbon的IRule方式這個要復雜一些,不過大部分都是造輪子,開發(fā)者只需要關心自定義的負載均衡邏輯即可~!

到此這篇關于SpringCloud LoadBalancer自定義負載均衡器使用解析的文章就介紹到這了,更多相關SpringCloud LoadBalancer內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java 超詳細講解抽象類與接口的使用

    Java 超詳細講解抽象類與接口的使用

    對于面向對象編程來說,抽象是它的一大特征之一,在 Java 中可以通過兩種形式來體現OOP的抽象:接口和抽象類,下面這篇文章主要給大家介紹了關于Java入門基礎之抽象類與接口的相關資料,需要的朋友可以參考下
    2022-04-04
  • 【Java IO流】字節(jié)流和字符流的實例講解

    【Java IO流】字節(jié)流和字符流的實例講解

    下面小編就為大家?guī)硪黄綣ava IO流】字節(jié)流和字符流的實例講解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java畢業(yè)設計實戰(zhàn)之財務預算管理系統(tǒng)的實現

    Java畢業(yè)設計實戰(zhàn)之財務預算管理系統(tǒng)的實現

    這是一個使用了java+SSM+Jsp+Mysql+Layui+Maven開發(fā)的財務預算管理系統(tǒng),是一個畢業(yè)設計的實戰(zhàn)練習,具有財務預算管理該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • java字符串反轉的7種方法

    java字符串反轉的7種方法

    本文主要介紹了java字符串反轉的7種方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Spring Boot2發(fā)布調用REST服務實現方法

    Spring Boot2發(fā)布調用REST服務實現方法

    這篇文章主要介紹了Spring Boot2發(fā)布調用REST服務實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • JAVA中Comparable接口和自定義比較器示例講解

    JAVA中Comparable接口和自定義比較器示例講解

    這篇文章主要給大家介紹了關于JAVA中Comparable接口和自定義比較器的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java中自增和自減操作符(++/--)的那些事

    Java中自增和自減操作符(++/--)的那些事

    這篇文章主要給大家介紹了關于Java中自增和自減操作符(++/--)的那些事,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • Java中l(wèi)ong類型與Long類型的區(qū)別和大小比較詳解

    Java中l(wèi)ong類型與Long類型的區(qū)別和大小比較詳解

    這篇文章主要給大家介紹了Java中l(wèi)ong類型與Long類型區(qū)別和大小比較的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • SpringBoot登錄驗證碼實現過程詳解

    SpringBoot登錄驗證碼實現過程詳解

    這篇文章主要介紹了SpringBoot登錄驗證碼實現過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • springboot的切面應用方式(注解Aspect)

    springboot的切面應用方式(注解Aspect)

    文章總結:Spring?Boot提供了三種攔截器:Filter、Interceptor和Aspect,Filter主要用于內容過濾和非登錄狀態(tài)的非法請求過濾,無法獲取Spring框架相關的信息,Interceptor可以在獲取請求類名、方法名的同時,獲取請求參數,但無法獲取參數值
    2024-11-11

最新評論

且末县| 吉安市| 吐鲁番市| 浦东新区| 莎车县| 曲周县| 读书| 宁夏| 宜宾县| 灵丘县| 万荣县| 五台县| 新河县| 吴江市| 定远县| 舒城县| 长海县| 丰镇市| 景洪市| 腾冲县| 湄潭县| 龙游县| 铁岭市| 富顺县| 金沙县| 宝清县| 房山区| 天峻县| 潼南县| 大丰市| 定襄县| 德兴市| 梓潼县| 塔城市| 霍林郭勒市| 松滋市| 杨浦区| 从化市| 双柏县| 伽师县| 阿合奇县|