欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springcloud ribbon負(fù)載均衡算法實(shí)現(xiàn)

 更新時(shí)間:2020年04月20日 15:09:01   作者:以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。  
這篇文章主要介紹了Springcloud ribbon負(fù)載均衡算法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一 前言

經(jīng)過幾篇的cloud系列文章,我想大家都有一個(gè)堅(jiān)實(shí)的基礎(chǔ),后續(xù)的學(xué)習(xí)就會(huì)輕松很多,如果是剛剛來看的讀者需要有eureka基礎(chǔ)知識(shí),或者查閱知識(shí)追尋者的cloud系列專欄;這篇文章主要講解如何使用ribbon實(shí)現(xiàn)web service客戶端調(diào)用,ribbon默認(rèn)算法實(shí)現(xiàn)負(fù)載均衡等!

二 ribbon簡介

ribbon是一個(gè)客戶端負(fù)載均衡器,其能夠整合不同的協(xié)議工具進(jìn)行web service API 調(diào)用;

主要特色如下:

提供可插拔式的負(fù)載均衡整合服務(wù)發(fā)現(xiàn)故障彈性恢復(fù)cloud支持客戶端整合加載負(fù)載均衡

核心工程如下:

ribbon-core:整合其他模塊實(shí)現(xiàn)負(fù)載均衡

ribbon-eureka: 基于 eureka client 實(shí)現(xiàn) 負(fù)載均衡

ribbon-httpclient: 包括JSR-311 實(shí)現(xiàn)REST 加載負(fù)載均衡

三 eureka-client

在之前的 eureka-client工程中創(chuàng)建controller包,并提供表現(xiàn)層接口,代碼如下,然后啟動(dòng)eureka-client實(shí)例2個(gè),分別為8090端口,8091端口;

/**
 * @Author lsc
 * <p> 知識(shí)追尋者,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依賴在父工程中已經(jīng)引入,故ribbon模塊中不會(huì)再次引入該依賴;

  <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進(jìn)行客戶端調(diào)用,故需要進(jìn)行配置,并且在方法上加 @LoadBalanced 注解表示開啟ribbon負(fù)載均衡;

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

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

4.3 service

創(chuàng)建service類,并且使用restTemplate進(jìn)行HTTP API 調(diào)用;注意點(diǎn)是這邊不使用ip端口,而是直接使用服務(wù)的應(yīng)用名稱 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

創(chuàng)建表現(xiàn)層類, 用于瀏覽器訪問;

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

  @Autowired
  RibbonService ribbonService;

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

4.5 ribbon啟動(dòng)類

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

/**
 * @Author lsc
 * <p>知識(shí)追尋者 ribbon啟動(dòng)類 </p>
 */
@SpringBootApplication
@EnableEurekaClient
public class RibbonApp {

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

4.6 application.yml

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

server:
 port: 8092
spring:
 application:
  name: eureka-ribbon # 應(yīng)用名稱
eureka:
 client:
  service-url:
   # 服務(wù)注冊(cè)地址
   defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/

4.7 啟動(dòng)工程

分別啟動(dòng) client ,server ; 如下圖

4.8 瀏覽器訪問結(jié)果

瀏覽器結(jié)果如下,說明我們?cè)?eureka-ribbon 中使用 restTemplate 結(jié)合 ribbon 實(shí)現(xiàn)了HTTP 方式從 eureka-clinet 模塊中調(diào)用API;

五 ribbon默認(rèn)負(fù)載均衡

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

  @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 工程,使用瀏覽器訪問,控制臺(tái)輸出如下,分別調(diào)用了8090,8091兩個(gè) eureka-client實(shí)例API,說明ribbon默認(rèn)的負(fù)載均衡機(jī)制是輪詢算法;

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring MVC入門_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Spring MVC入門_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Spring MVC入門,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • java計(jì)算自然數(shù)中的水仙花數(shù)的方法分享

    java計(jì)算自然數(shù)中的水仙花數(shù)的方法分享

    這篇文章主要介紹了java計(jì)算自然數(shù)中的水仙花數(shù)的方法,需要的朋友可以參考下
    2014-03-03
  • Java中的set集合是什么意思

    Java中的set集合是什么意思

    這篇文章主要介紹了Java中的set集合是什么意思,詳細(xì)地講解一下Collection集合中的另外一個(gè)分支——Set系列集合,需要的朋友可以參考下
    2022-05-05
  • Spring boot2.x中集成H2數(shù)據(jù)庫代碼實(shí)例

    Spring boot2.x中集成H2數(shù)據(jù)庫代碼實(shí)例

    這篇文章主要介紹了Spring boot2.x中集成H2數(shù)據(jù)庫代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Mybatis實(shí)現(xiàn)ResultMap結(jié)果集

    Mybatis實(shí)現(xiàn)ResultMap結(jié)果集

    本文主要介紹了Mybatis實(shí)現(xiàn)ResultMap結(jié)果集,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 如何解決Project SDK is not defined問題

    如何解決Project SDK is not defined問題

    這篇文章主要介紹了如何解決Project SDK is not defined問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 詳解Java利用同步塊synchronized()保證并發(fā)安全

    詳解Java利用同步塊synchronized()保證并發(fā)安全

    這篇文章主要介紹了Java利用同步塊synchronized()保證并發(fā)安全,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 自己動(dòng)手編寫一個(gè)Mybatis插件之Mybatis脫敏插件

    自己動(dòng)手編寫一個(gè)Mybatis插件之Mybatis脫敏插件

    這篇文章主要介紹了自己動(dòng)手編寫一個(gè)Mybatis插件之Mybatis脫敏插件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java類的定義與使用舉例詳解

    java類的定義與使用舉例詳解

    這篇文章主要給大家介紹了關(guān)于java類的定義與使用的相關(guān)資料,類的方法是用來定義類的行為,在方法中通過操作類的成員變量、編寫業(yè)務(wù)邏輯、返回 結(jié)果等實(shí)現(xiàn)類的業(yè)務(wù)行為,需要的朋友可以參考下
    2023-11-11
  • 詳解Java 打印堆棧的幾種方法

    詳解Java 打印堆棧的幾種方法

    本篇文章主要介紹了Java 打印堆棧的幾種方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評(píng)論