91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Springcloud ribbon負載均衡算法

發布時間:2020-08-01 13:55:50 來源:億速云 閱讀:226 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了如何實現Springcloud ribbon負載均衡算法,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

一 前言

經過幾篇的cloud系列文章,我想大家都有一個堅實的基礎,后續的學習就會輕松很多,如果是剛剛來看的讀者需要有eureka基礎知識,或者查閱知識追尋者的cloud系列專欄;這篇文章主要講解如何使用ribbon實現web service客戶端調用,ribbon默認算法實現負載均衡等!

二 ribbon簡介

ribbon是一個客戶端負載均衡器,其能夠整合不同的協議工具進行web service API 調用;

主要特色如下:

提供可插拔式的負載均衡整合服務發現故障彈性恢復cloud支持客戶端整合加載負載均衡

核心工程如下:

ribbon-core:整合其他模塊實現負載均衡

ribbon-eureka: 基于 eureka client 實現 負載均衡

ribbon-httpclient: 包括JSR-311 實現REST 加載負載均衡

三 eureka-client

在之前的 eureka-client工程中創建controller包,并提供表現層接口,代碼如下,然后啟動eureka-client實例2個,分別為8090端口,8091端口;

/**
 * @Author lsc
 * <p> 知識追尋者,ribbon provider the restful api</p>
 */
@RestController
public class RibbonProvidderController {


  @GetMapping("zszxz/ribbon")
  public String testRibbon(){
    return "hell i am zszxz";
  }
}

四 ribbon-client

4.1 pom.xml

在父工程低下添加新模塊 ribbon-client;原來的start-web依賴在父工程中已經引入,故ribbon模塊中不會再次引入該依賴;

  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-ribbon</artifactId>
    </dependency>
  </dependencies>

4.2 config

使用restTemplate進行客戶端調用,故需要進行配置,并且在方法上加 @LoadBalanced 注解表示開啟ribbon負載均衡;

/**
 * @Author lsc
 * <p> ribbon-restTemplate配置 </p>
 */
@Configuration
public class RibbonConfig {

  @Bean
  @LoadBalanced//表示用于負載均衡
  RestTemplate restTemplate(){
    return new RestTemplate();
  }
}

4.3 service

創建service類,并且使用restTemplate進行HTTP API 調用;注意點是這邊不使用ip端口,而是直接使用服務的應用名稱 eureka-client ;

/**
 * @Author lsc
 * <p> </p>
 */
@Service
public class RibbonService {

  @Autowired
  RestTemplate restTemplate;


  public String testRibbon(){
    return restTemplate.getForObject("http://eureka-client/zszxz/ribbon",String.class);
  }
}

4.4 controller

創建表現層類, 用于瀏覽器訪問;

/**
 * @Author lsc
 * <p> </p>
 */
@RestController
public class RibbonController {

  @Autowired
  RibbonService ribbonService;

  @GetMapping("ribbon/test")
  public String testRibbon(){
    return ribbonService.testRibbon();
  }
} 

4.5 ribbon啟動類

ribbon的啟動類也是作為 eureka 的客戶端故需要加上@EnableEurekaClient注解;

/**
 * @Author lsc
 * <p>知識追尋者 ribbon啟動類 </p>
 */
@SpringBootApplication
@EnableEurekaClient
public class RibbonApp {

  public static void main(String[] args) {
    SpringApplication.run(RibbonApp.class,args);
  }
}

4.6 application.yml

application.yml 配置中使用端口8092,服務注冊地址分別是peer1,peer2,peer3;

server:
 port: 8092
spring:
 application:
  name: eureka-ribbon # 應用名稱
eureka:
 client:
  service-url:
   # 服務注冊地址
   defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/

4.7 啟動工程

分別啟動 client ,server ; 如下圖

如何實現Springcloud ribbon負載均衡算法

4.8 瀏覽器訪問結果

瀏覽器結果如下,說明我們在 eureka-ribbon 中使用 restTemplate 結合 ribbon 實現了HTTP 方式從 eureka-clinet 模塊中調用API;

如何實現Springcloud ribbon負載均衡算法

五 ribbon默認負載均衡

LoadBalancerClient 是 ribbon 的一個核心類,其能夠獲得 ribbon提供負載均衡的實例信息;在 ribbon-client模塊中的controller層添加 方法 ,方法主體是獲得實例的端口和主機;以便于于我們分析ribbon負載均衡算法;

  @Autowired
  LoadBalancerClient loadBalanced;

  @GetMapping("ribbon")
  public String ribbon(){
    ServiceInstance choose = loadBalanced.choose("eureka-client");
    String s = "host is :" + choose.getHost() + " port is :" + choose.getPort();
    System.out.println(s);
    return s;
  }

重啟ribbon-client 工程,使用瀏覽器訪問,控制臺輸出如下,分別調用了8090,8091兩個 eureka-client實例API,說明ribbon默認的負載均衡機制是輪詢算法;

host is :peer1 port is :8091
host is :peer1 port is :8090
host is :peer1 port is :8091
host is :peer1 port is :8090
host is :peer1 port is :8091
host is :peer1 port is :8090
host is :peer1 port is :8091
host is :peer1 port is :8090

以上就是關于如何實現Springcloud ribbon負載均衡算法的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥阳县| 徐州市| 长治县| 延边| 灵寿县| 永德县| 南川市| 上栗县| 巴彦淖尔市| 托克逊县| 潮安县| 鄂尔多斯市| 沧州市| 吉水县| 岳普湖县| 依安县| 巴南区| 赞皇县| 陵川县| 磐石市| 枞阳县| 兖州市| 南昌县| 顺昌县| 邵武市| 松江区| 宝山区| 靖边县| 隆昌县| 涪陵区| 文昌市| 北安市| 嵩明县| 黎川县| 定西市| 内江市| 兴安盟| 双峰县| 融水| 土默特右旗| 武乡县|