1. 程式人生 > >springcloud-ribbon負載均衡

springcloud-ribbon負載均衡

一 前言

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

二 ribbon簡介

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

主要特色如下:

  1. 提供可插拔式的負載均衡
  2. 整合服務發現
  3. 故障彈性恢復
  4. cloud支援
  5. 客戶端整合載入負載均衡

核心工程如下:

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 ; 如下圖

4.8 瀏覽器訪問結果

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

五 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

相關推薦

Eclipse初次搭建SpringCloud+ribbon負載均衡(三)

把上一個文章的專案重新複製一份 修改下yml中埠(文章地址: https://blog.csdn.net/yuzhiqiang_1/article/details/84580665) 一: application.yml server: port: 12347 # 你的埠 eure

SpringCloud Ribbon負載均衡配置

本章基於SpringCloud Ribbon初步配置,記憶體小於8G可能啟動不起來服務,建議最低8G記憶體跑叢集 叢集的圖說明:消費者向eureka 上獲取可用的任務,根據預設的輪訓方式隨機選一個提供服務。 步驟一:建立埠8002,8003 maven mod

springcloud-Ribbon-負載均衡元件

Ribbon負載均衡 1.Ribbon簡介 ribbin是Netflix釋出的負載均衡器,有助於控制http和tcp客戶端的行為,為ribbon配置服務提供者列表後,ribbon就可以基於某種負載均衡演算法,自動的幫助服務消費者去請求。ribbon提供了很多的負載均衡演算法例如 RoundRobi

SpringCloud Ribbon 負載均衡 通過伺服器名無法連線的神坑一個

一,問題 採取eureka叢集、客戶端通過Ribbon呼叫服務,Ribbon端報下列異常 java.net.UnknownHostException: SERVICE-HI java.lang.IllegalStateException: No instances available for SER

springcloud-ribbon負載均衡

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

SpringCloud系列五:Ribbon 負載均衡Ribbon 基本使用、Ribbon 負載均衡、自定義 Ribbon 配置、禁用 Eureka 實現 Ribbon 調用)

control context .mm 別名 void 用戶 size ali ram 1、概念:Ribbon 負載均衡 2、具體內容 現在所有的服務已經通過了 Eureka 進行了註冊,那麽使用 Eureka 註冊的目的是希望所有的服務都統一歸屬到 Eureka 之中進

springcloudRibbon負載均衡

Ribbon是Netflix釋出的負載均衡器,它有助於控制HTTP和TCP控制端的行為。為Ribbon配置服務提供地址列表後,Ribbon就可基於某種負載均衡演算法,自動的幫助服務消費者去請求。Ribbon預設為我們提供了很多的負載均衡演算法,例如輪詢、隨機等,也可以實現自定義的負載均衡演算法。和Eureka

springCloudribbon負載均衡與nginx的負載均衡

Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡的工具。它是一個基於HTTP和TCP的客戶端負載均衡器。它可以通過在客戶端中配置ribbonServerList來設定服務端列表去輪詢訪問以達到均衡負載的作用。 Ribbon是什麼? Ribb

SpringCloud原始碼:Ribbon負載均衡分析

    本文主要分析 SpringCloud 中 Ribbon 負載均衡流程和原理。     SpringCloud版本為:Edgware.RELEASE。 一.時序圖     和以前一樣,先把圖貼出來

SpringCloud(四)Ribbon負載均衡《2》(核心元件IRule及自定義Ribbon負載均衡策略)

1、Ribbon核心元件IRule 1.1、解析IRule自帶的7種演算法 IRule:根據特定演算法從服務列表中選取一個要訪問的服務。 IRule實現類如下: RandomRule:隨機,使用Random物件從服務列表中隨機選擇一個服務 RoundRobinR

SpringCloud系列——Zuul 動態路由 SpringCloud系列——Ribbon 負載均衡 SpringCloud系列——Eureka 服務註冊與發現 SpringCloud系列——Ribbon 負載均衡

  前言   Zuul 是在Spring Cloud Netflix平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架,是Netflix基於jvm的路由器和伺服器端負載均衡器,相當於是裝置和 Netflix 流應用的 Web 網站後端所有請求的前門。本文基於上篇(SpringCloud系列——Ribbon

SpringCloud系列——Ribbon 負載均衡

  Zuul 是在Spring Cloud Netflix平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架,是Netflix基於jvm的路由器和伺服器端負載均衡器,相當於是裝置和 Netflix 流應用的 Web 網站後端所有請求的前門。本文基於上篇(SpringCloud系列——Ribbon

淺談SpringCloud (三) Ribbon負載均衡

就會 rul back alt build 算法 實例 app creat 什麽是負載均衡 當一臺服務器的單位時間內的訪問量越大時,服務器壓力就越大,大到超過自身承受能力時,服務器就會崩潰。為了避免服務器崩潰,讓用戶有更好的體驗,我們通過負載均衡的方式來分擔服務器壓力。

SpringCloud學習 - Ribbon負載均衡(客戶端)

Ribbon負載均衡(客戶端) 書籤: (1)@LoadBalanced 負載均衡 (2)Ribbon自帶的負載規則 (3)Ribbon自定義負載規則 @LoadBalanced 負載均衡 複製專案eureka-provider,生成eureka-prov

四、SpringCloudRibbon負載均衡

Ribbon是一個客戶端的負載均衡(Load Balance)工具,可以很好的控制HTTP和TCP的一些行為,通過基於多種負載均衡演算法達到系統的高可用(HA) 官方資料: 以下內容是基於上一節的工程,使用Ribbon+RestTemplate 實現

springcloud 系列教程三:RestTemplate實現服務的呼叫以及Ribbon負載均衡

springcloud 中有兩種呼叫方式,RestTemplate、Fegin。RestTemplate 由 spring 提供,

SpringCloud學習筆記(2):使用Ribbon負載均衡

簡介 Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡工具,在註冊中心對Ribbon客戶端進行註冊後,Ribbon可以基於某種負載均衡演算法,如輪詢(預設)、隨機、加權輪詢、加權隨機等自動幫助服務消費者呼叫介面。 專案介紹 sc-parent,父模組(請參照S

最適合新手入門的SpringCloud教程 6—Ribbon負載均衡「F版本」

![](https://img2020.cnblogs.com/other/1003051/202004/1003051-20200405195932290-1275725452.png) > SpringCloud版本:Finchley.SR2 > SpringBoot版本:2.0.3.REL

SpringCloud 服務負載均衡和呼叫 Ribbon、OpenFeign

# 1、Ribbon Spring Cloud Ribbon是基於Netflix Ribbon實現的—套客戶端―負載均衡的工具。 簡單的說,Ribbon是Netlix釋出的開源專案,主要功能是提供客戶端的軟體負載均衡演算法和服務呼叫。Ribbon客戶端元件提供一系列完善的配置項如連線超時,重試等。簡單的說

Ribbon負載均衡策略配置

wire cat ret 隨機選擇 active one 時間 trac 搭建 在這裏吐槽一句:網上很多文章真是神坑,你不看還好,看了只會問題越來越多,就連之前的問題都沒有解決!!! 不多說了,Ribbon作為後端負載均衡器,比Nginx更註重的是請求分發而不是承擔並發,