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

Ribbon負載均衡算法原理與使用介紹

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

負載均衡算法:rest接口第幾次請求數(shù) % 服務器集群總數(shù)量 = 實際調(diào)用服務器位置下標 ,每次服務重啟動后rest接口計數(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 組合成為集群,它們共計2臺機器,集群總數(shù)為2, 按照輪詢算法原理:

當總請求數(shù)為1時: 1 % 2 =1 對應下標位置為1 ,則獲得服務地址為127.0.0.1:8001

當總請求數(shù)位2時: 2 % 2 =0 對應下標位置為0 ,則獲得服務地址為127.0.0.1:8002

當總請求數(shù)位3時: 3 % 2 =1 對應下標位置為1 ,則獲得服務地址為127.0.0.1:8001

當總請求數(shù)位4時: 4 % 2 =0 對應下標位置為0 ,則獲得服務地址為127.0.0.1:8002

如此類推......

寫一個本地負載均衡器

設現(xiàn)在有倆個服務端口8001 8002幼由80端口調(diào)動

其中8001 8002 的controller中

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

80 的一個接口為:

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

實現(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;
    //可以獲取注冊中心上的服務列表
    @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

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

相關文章

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

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

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

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

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

    Java使用BigDecimal進行運算封裝的實際案例

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

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

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

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

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

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

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

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

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

    Springmvc完成ajax功能實例詳解

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

    java實現(xiàn)隨機輸出300題四則運算

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

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

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

最新評論

乐至县| 格尔木市| 汉寿县| 顺平县| 霍林郭勒市| 衢州市| 沂源县| 乾安县| 涿州市| 西安市| 安龙县| 许昌县| 北安市| 轮台县| 西充县| 横峰县| 彩票| 九龙县| 上饶县| 吕梁市| 吴旗县| 都昌县| 民和| 安宁市| 准格尔旗| 金沙县| 巨鹿县| 太康县| 高台县| 青州市| 永胜县| 普洱| 泗水县| 察隅县| 江都市| 清远市| 延长县| 布尔津县| 侯马市| 广德县| 原阳县|