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

Ribbon負(fù)載均衡算法原理與使用介紹

 更新時(shí)間:2022年09月01日 16:12:27   作者:一個(gè)風(fēng)輕云淡  
在微服務(wù)中,對(duì)服務(wù)進(jìn)行拆分之后,必然會(huì)帶來微服務(wù)之間的通信需求,而每個(gè)微服務(wù)為了保證高可用性,又會(huì)去部署集群,那么面對(duì)一個(gè)集群微服務(wù)進(jìn)行通信的時(shí)候,如何進(jìn)行負(fù)載均衡也是必然需要考慮的問題

負(fù)載均衡算法:rest接口第幾次請(qǐng)求數(shù) % 服務(wù)器集群總數(shù)量 = 實(shí)際調(diào)用服務(wù)器位置下標(biāo) ,每次服務(wù)重啟動(dòng)后rest接口計(jì)數(shù)從1開始。

List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");

如:

List [0] instances = 127.0.0.1:8002

List [1] instances = 127.0.0.1:8001

8001+ 8002 組合成為集群,它們共計(jì)2臺(tái)機(jī)器,集群總數(shù)為2, 按照輪詢算法原理:

當(dāng)總請(qǐng)求數(shù)為1時(shí): 1 % 2 =1 對(duì)應(yīng)下標(biāo)位置為1 ,則獲得服務(wù)地址為127.0.0.1:8001

當(dāng)總請(qǐng)求數(shù)位2時(shí): 2 % 2 =0 對(duì)應(yīng)下標(biāo)位置為0 ,則獲得服務(wù)地址為127.0.0.1:8002

當(dāng)總請(qǐng)求數(shù)位3時(shí): 3 % 2 =1 對(duì)應(yīng)下標(biāo)位置為1 ,則獲得服務(wù)地址為127.0.0.1:8001

當(dāng)總請(qǐng)求數(shù)位4時(shí): 4 % 2 =0 對(duì)應(yīng)下標(biāo)位置為0 ,則獲得服務(wù)地址為127.0.0.1:8002

如此類推......

寫一個(gè)本地負(fù)載均衡器

設(shè)現(xiàn)在有倆個(gè)服務(wù)端口8001 8002幼由80端口調(diào)動(dòng)

其中8001 8002 的controller中

@GetMapping(value = "/payment/lb")
    public String getPaymentLB()
    {
        return serverPort;
    }

80 的一個(gè)接口為:

public interface LoadBalancer
{
    ServiceInstance instances(List<ServiceInstance> serviceInstances);
}
 

實(shí)現(xiàn)類

@Component
public class MyLB implements LoadBalancer
{
    private AtomicInteger atomicInteger = new AtomicInteger(0);
    public final int getAndIncrement()
    {
        int current;
        int next;
        do
        {
            current = this.atomicInteger.get();
            next = current >= 2147483647 ? 0 : current + 1;
        } while(!this.atomicInteger.compareAndSet(current, next));
        System.out.println("*****next: "+next);
        return next;
    }
    @Override
    public ServiceInstance instances(List<ServiceInstance> serviceInstances)
    {
        int index = getAndIncrement() % serviceInstances.size();
        return serviceInstances.get(index);
    }
}

調(diào)用 方法

 @Resource
    private RestTemplate restTemplate;
    //可以獲取注冊(cè)中心上的服務(wù)列表
    @Resource
    private DiscoveryClient discoveryClient;
    @Resource
    private LoadBalancer loadBalancer;
@GetMapping("/consumer/payment/lb")
    public String getPaymentLB()
    {
        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        if(instances == null || instances.size()<=0) {
            return null;
        }
        ServiceInstance serviceInstance = loadBalancer.instances(instances);
        URI uri = serviceInstance.getUri();
        return restTemplate.getForObject(uri+"/payment/lb",String.class);
    }

ApplicationContextBean去掉注解@LoadBalanced

到此這篇關(guān)于Ribbon負(fù)載均衡算法原理與使用介紹的文章就介紹到這了,更多相關(guān)Ribbon負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis collection關(guān)聯(lián)查詢多個(gè)參數(shù)方式

    mybatis collection關(guān)聯(lián)查詢多個(gè)參數(shù)方式

    在使用MyBatis進(jìn)行關(guān)聯(lián)查詢時(shí),往往需要根據(jù)多個(gè)參數(shù)進(jìn)行查詢,例如,使用evtId和businessType作為查詢條件,同時(shí)在resultMap中配置id和businessType1作為結(jié)果映射,這種情況下,可以通過<sql>標(biāo)簽定義參數(shù)模板,或者使用@Param注解指定參數(shù)名稱
    2024-10-10
  • Spring中的監(jiān)聽器SpringApplicationRunListener詳解

    Spring中的監(jiān)聽器SpringApplicationRunListener詳解

    這篇文章主要介紹了Spring中的監(jiān)聽器SpringApplicationRunListener詳解,命名我們就可以知道它是一個(gè)監(jiān)聽者,分析springboot啟動(dòng)流程我們會(huì)發(fā)現(xiàn),它其實(shí)是用來在整個(gè)啟動(dòng)流程中接收不同執(zhí)行點(diǎn)事件通知的監(jiān)聽者,需要的朋友可以參考下
    2023-11-11
  • Java使用BigDecimal進(jìn)行運(yùn)算封裝的實(shí)際案例

    Java使用BigDecimal進(jìn)行運(yùn)算封裝的實(shí)際案例

    今天小編就為大家分享一篇關(guān)于Java使用BigDecimal進(jìn)行運(yùn)算封裝的實(shí)際案例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • idea中不用git解除關(guān)聯(lián)的方式

    idea中不用git解除關(guān)聯(lián)的方式

    IntelliJ?IDEA是一款高效的Java編程環(huán)境,提供智能編碼輔助、J2EE、Ant等集成,支持本地和遠(yuǎn)程調(diào)試,本文講述了如何在IDEA中解除版本控制和刪除.git文件夾,幫助開發(fā)者更好地管理項(xiàng)目設(shè)置和提升開發(fā)效率
    2024-10-10
  • Springboot實(shí)現(xiàn)視頻上傳及壓縮功能

    Springboot實(shí)現(xiàn)視頻上傳及壓縮功能

    這篇文章主要介紹了Springboot實(shí)現(xiàn)視頻上傳及壓縮功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 教你用JDK編譯Java文件的方法

    教你用JDK編譯Java文件的方法

    這篇文章主要介紹了教你用JDK編譯Java文件的方法,分步驟給大家介紹了設(shè)置環(huán)境變量的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Spring Cloud 負(fù)載均衡器 Ribbon原理及實(shí)現(xiàn)

    Spring Cloud 負(fù)載均衡器 Ribbon原理及實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud 負(fù)載均衡器 Ribbon原理及實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Springmvc完成ajax功能實(shí)例詳解

    Springmvc完成ajax功能實(shí)例詳解

    在本篇文章里小編給大家整理了關(guān)于Springmvc完成ajax功能實(shí)例內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2019-09-09
  • java實(shí)現(xiàn)隨機(jī)輸出300題四則運(yùn)算

    java實(shí)現(xiàn)隨機(jī)輸出300題四則運(yùn)算

    本文主要介紹了java實(shí)現(xiàn)隨機(jī)輸出300題四則運(yùn)算實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • Java實(shí)現(xiàn)Treap樹的示例代碼

    Java實(shí)現(xiàn)Treap樹的示例代碼

    本文主要介紹了Java實(shí)現(xiàn)Treap樹的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論

宜黄县| 墨江| 沁源县| 朝阳县| 永善县| 贵溪市| 彩票| 炎陵县| 富裕县| 大关县| 德江县| 华坪县| 仲巴县| 崇礼县| 丰城市| 夏邑县| 隆德县| 巴彦淖尔市| 湄潭县| 赤壁市| 皮山县| 买车| 盘山县| 安吉县| 新乡市| 浏阳市| 龙里县| 南城县| 寻甸| 夏津县| 成武县| 察隅县| 南昌县| 紫金县| 荔浦县| 容城县| 襄樊市| 甘孜县| 泽州县| 金华市| 多伦县|