一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringCloud Ribbon 負載均衡的實現

SpringCloud Ribbon 負載均衡的實現

2021-07-01 14:48huanzi-qch Java教程

Ribbon是一個客戶端負載均衡器,它提供了對HTTP和TCP客戶端的行為的大量控制。這篇文章主要介紹了SpringCloud Ribbon 負載均衡的實現,感興趣的小伙伴們可以參考一下

前言

ribbon是一個客戶端負載均衡器,它提供了對http和tcp客戶端的行為的大量控制。我們在上篇(猛戳:springcloud系列——feign 服務調用)已經實現了多個服務之間的feign調用,服務消費者調用服務提供者,本文記錄feign調用ribbon負載均衡的服務提供者

github地址:https://github.com/netflix/ribbon

官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.rc2/single/spring-cloud-netflix.html

服務提供者

服務提供者有兩個,實際上可以看做只有一個,因為這兩個只有端口不同

maven引入ribbon

?
1
2
3
4
5
<!-- ribbon -->
   <dependency>
     <groupid>org.springframework.cloud</groupid>
     <artifactid>spring-cloud-starter-netflix-ribbon</artifactid>
   </dependency>

創建ribbonconfig文件,主類添加@ribbonclient(name = "ribbonconfig", configuration = ribbonconfig.class),我這里偷懶,直接在主類中創建內部類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@enableeurekaclient
@ribbonclient(name = "ribbonconfig", configuration = ribbonconfig.class)
@springbootapplication
public class springbootspringdatajpaapplication{
 
  public static void main(string[] args) {
    springapplication.run(springbootspringdatajpaapplication.class, args);
  }
}
 
@configuration
class ribbonconfig {
 
  @bean
  public irule ribbonrule(){
    return new randomrule(); //分配策略:隨機選擇一個server
//    return new bestavailablerule(); //分配策略:選擇一個最小的并發請求的server,逐個考察server,如果server被tripped了,則忽略
//    return new roundrobinrule(); //分配策略:輪詢選擇,輪詢index,選擇index對應位置的server
//    return new weightedresponsetimerule(); //分配策略:根據響應時間分配一個weight(權重),響應時間越長,weight越小,被選中的可能性越低
//    return new zoneavoidancerule(); //分配策略:復合判斷server所在區域的性能和server的可用性選擇server
//    return new retryrule(); //分配策略:對選定的負載均衡策略機上重試機制,在一個配置時間段內當選擇server不成功,則一直嘗試使用subrule的方式選擇一個可用的server
  }
 
  @bean
  public iping ribbonping() {
    return new pingurl();
  }
 
  @bean
  public serverlistsubsetfilter serverlistfilter() {
    serverlistsubsetfilter filter = new serverlistsubsetfilter();
    return filter;
  }
 
}

下表顯示了spring cloud netflix默認為ribbon提供的bean:

SpringCloud Ribbon 負載均衡的實現

官網例子:

SpringCloud Ribbon 負載均衡的實現

我們添加一個測試接口

?
1
2
3
4
5
6
7
8
9
10
@restcontroller
@requestmapping("/user")
public class usercontroller {
 
  @requestmapping("/ribbon")
  public string ribbon() {
    return "springdatejpa -- 我的端口是:10088";
  }
 
}

第二個服務提供者也是這樣配置,注意:應用名要相同(spring.application.name=springdatejpa);端口不同;

服務消費者

服務消費者使用feign調用,無需做任何修改,feign已經使用ribbon。具體配置請戳:springcloud系列——feign 服務調用

?
1
2
3
4
5
6
@feignclient(name = "springdatejpa", path = "/user/")
public interface myspringbootfeign {
 
  @requestmapping("/ribbon")
  string ribbon();
}
?
1
2
3
4
5
6
7
/**
   * feign調用
   */
  @getmapping("feign/ribbon")
  string ribbon(){
    return myspringbootfeign.ribbon();
  }

效果

啟動所有項目,我們注冊了三個服務,其中:

有兩個服務名稱相同、處理的業務相同、端口不同,這兩臺作為服務提供者(可看做是一個“小集群”);

另一個是服務消費者(feign調用);

SpringCloud Ribbon 負載均衡的實現

消費者不斷調用,ribbon會從注冊中心的服務列表拉取實例集合進行負載均衡調用背后的服務提供者

SpringCloud Ribbon 負載均衡的實現

后記

ribbon負載均衡已經可以實現,更多配置請看官方文檔

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/huanzi-qch/p/10136254.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 垫底辣妹免费观看完整版 | 韩国www| 国产日韩精品一区二区在线观看 | 白丝爆动漫羞羞动漫网站 | 龟甲情感超市全文阅读 小说 | 国产精品久久国产三级国电话系列 | 亚洲日韩精品欧美一区二区一 | 麻豆天美精东果冻传媒在线 | 思思91精品国产综合在线 | 男人捅女人漫画 | 国产精品嫩草影院一二三区 | 久久免费看少妇级毛片蜜臀 | 国产区综合另类亚洲欧美 | 欧美图片另类小说综合 | 国产亚洲精品高清在线 | 精品国产免费观看一区高清 | 韩国久播影院理论片不卡影院 | 欧美美女被爆操 | 日产精品卡一卡2卡三卡乱码工厂 | 免费欧美一级 | 国产 日韩欧美 | 韩国三级动漫 | 久久电影精品久久99久久 | 国产成人精品系列在线观看 | 韩国三级2020 | 女人麻豆国产香蕉久久精品 | 秋霞午夜 | 小小水蜜桃视频高清在线播放 | 日韩精选视频 | 欧美日韩导航 | 边摸边吃奶又黄激烈视频韩国 | 午夜影院网站 | 国产色网址 | 日本老妇人乱视频 | 手机看片国产免费现在观看 | 日本艳鉧动漫1~6完整版在 | 91香蕉视频在线播放 | 关晓彤一级做a爰片性色毛片 | 欧美一卡2卡3卡无卡 | 96av视频在线观看 | 亚洲 欧美 偷自乱 图片 |