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

Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼

 更新時(shí)間:2020年11月06日 09:44:35   作者:Demo_Null  
Ribbon 是 Netflix 發(fā)布的負(fù)載均衡器,它有助于控制 HTTP 和 TCP 客戶端的行為。這篇文章主要介紹了Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼,需要的朋友可以參考下

1.1 簡介

1.1.1 概述

  Ribbon 是 Netflix 發(fā)布的負(fù)載均衡器,它有助于控制 HTTP 和 TCP 客戶端的行為。為 Ribbon 配置服務(wù)提供者地址列表后,Ribbon 就可基于某種負(fù)載均衡算法,自動地幫助服務(wù)消費(fèi)者去請求。Ribbon 默認(rèn)為我們提供了很多的負(fù)載均衡算法,例如輪詢、隨機(jī)等。當(dāng)然,我們也可為 Ribbon 實(shí)現(xiàn)自定義的負(fù)載均衡算法。Ribbon 現(xiàn)在已經(jīng)進(jìn)入維護(hù)狀態(tài),但目前仍在大規(guī)模使用,Spring Cloud 準(zhǔn)備使用 LoadBalancer 作為 Ribbon 的替換方案。

1.1.2 相關(guān)依賴

  因?yàn)楝F(xiàn)在的注冊中心幫我們引入了 Ribbon 我們不需要再次引入就可以直接使用,當(dāng)然也可以再引入一次沒有影響。

在這里插入圖片描述

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

1.2 簡單使用

1.2.1 搭建項(xiàng)目

eureka 項(xiàng)目

1.2.2 開啟負(fù)載均衡

  開啟負(fù)載均衡非常簡單,只需要在 RestTemplate 的配置方法上加上 @LoadBalanced 注解即可使用最簡單的輪詢。

/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/10/29
 * @description 消費(fèi)者啟動類
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {
 public static void main(String[] args) {
  SpringApplication.run(ConsumerApplication.class, args);
 }
 
 @Bean
 @LoadBalanced
 public RestTemplate getRestTemplate() {
  return new RestTemplate();
 }
}

1.2.3 使用負(fù)載均衡

/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/10/29
 * @description
 */
@RestController
@RequestMapping("/consumer")
public class ConsumerController {

 @Autowired
 private DiscoveryClient discoveryClient;

 @Autowired
 private RestTemplate restTemplate;

 @GetMapping("/go")
 public void go() {
  List<ServiceInstance> providerServer = discoveryClient.getInstances("ProviderServer");

  if (0 == providerServer.size()) {
   return;
  }

  ServiceInstance serviceInstance = providerServer.get(0);
  String url = serviceInstance.getUri() + "/provider/get";
  System.out.println(url + " --- ");
  String str = restTemplate.getForObject(url, String.class);
  System.out.println(str);

 }
}

  喔嚯!報(bào)錯了,明明可以訪問到為什么會報(bào)找不到實(shí)例呢?這是應(yīng)為咱們使用 DiscoveryClient 直接獲取到了服務(wù)提供者集群中某一個(gè)的地址,然后讓 RestTemplate 去進(jìn)行負(fù)載均衡。我們都已經(jīng)拿到了準(zhǔn)確地址再怎么進(jìn)行負(fù)載均衡?所以我們這里不能使用 IP 要使用服務(wù)名稱。

在這里插入圖片描述
在這里插入圖片描述

@RestController
@RequestMapping("/consumer")
public class ConsumerController {

 @Autowired
 private RestTemplate restTemplate;


 @GetMapping("/go")
 public void go() {
  String url = "http://ProviderServer/provider/get";

  String str = restTemplate.getForObject(url, String.class);
  System.out.println(str);
 }
}

修改完畢之后就可以看到服務(wù)提供者是輪換進(jìn)行提供服務(wù)的

在這里插入圖片描述

1.3 替換負(fù)載均衡策略

1.3.1 自帶負(fù)載均衡策略

在這里插入圖片描述

策略名 策略描述
RoundRobinRule 輪詢選擇 server
RandomRule 隨機(jī)選擇一個(gè) serve
RetryRule 先按輪詢策略獲取服務(wù),如果獲取服務(wù)失敗則在指定時(shí)間內(nèi)重試,獲取可用服務(wù)
BestAvailableRule 會先過濾由于多次訪問故障而處于斷路器跳閘狀態(tài)的服務(wù),然后選擇一個(gè)并發(fā)量最小的服務(wù)
AvailabilityFilteringRule 會優(yōu)先過濾故障實(shí)例,再選擇并發(fā)較小的實(shí)例
WeightedResponseTimeRule 對輪詢的擴(kuò)展,響應(yīng)速度越快的實(shí)例選擇比重權(quán)越大,越容易被選擇
ZoneAvoidanceRule 復(fù)合判斷 server 所在區(qū)域的性能和 server 的可用性選擇 server

1.3.2 使用配置類

  官方文檔明確警告,這個(gè)自定義配置類不能放在 @ComponedtScan 所掃描的當(dāng)前包下以及子包下,否則我們自定義的這個(gè)配置類就會被所有的 Ribbon 客戶端所共享。即在 Spring Boot 主程序掃描的包外定義配置類或在與 Spring Boot 主程序的同一級目錄但在排除掃描。配置類創(chuàng)建完畢后為 Spring Boo 主程序添加 @RibbonClient 注解引入配置類,用 name 屬性來指定調(diào)用的服務(wù)名稱,configuration 屬性指定自定義配置類

@Configuration
public class MyRibbonRule {

 @Bean
 public IRule ribbonRule() {
  return new RandomRule();
 }
}
@SpringBootApplication
@EnableDiscoveryClient
// 用 name 來指定調(diào)用的服務(wù)名稱,configuration 指定自定義配置類
@RibbonClient(name = "ProviderServer", configuration = MyRibbonRule.class)
public class ConsumerApplication {

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

 @Bean
 @LoadBalanced
 public RestTemplate getRestTemplate() {
  return new RestTemplate();
 }
}

在這里插入圖片描述

1.3.3 配置文件

# 這種配置的優(yōu)先級低于配置類
# 想要調(diào)用的服務(wù)名稱,即服務(wù)提供者名稱
ProviderServer:
 ribbon:
 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

在這里插入圖片描述

源碼

到此這篇關(guān)于Spring Cloud 系列之負(fù)載均衡 Ribbon的示例代碼的文章就介紹到這了,更多相關(guān)Spring Cloud 負(fù)載均衡 Ribbon內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解

    SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解

    本文主要介紹了SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • elasticsearch集群cluster示例詳解

    elasticsearch集群cluster示例詳解

    這篇文章主要為大家介紹了elasticsearch集群cluster示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • kafka監(jiān)聽問題的解決和剖析

    kafka監(jiān)聽問題的解決和剖析

    這篇文章主要給大家介紹了關(guān)于kafka監(jiān)聽問題的解決和剖析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java多線程之原子類解析

    Java多線程之原子類解析

    這篇文章主要介紹了Java多線程之原子類解析,Java原子類是一種多線程編程中常用的工具,用于實(shí)現(xiàn)線程安全的操作,它們提供了一種原子性操作的機(jī)制,確保多個(gè)線程同時(shí)訪問共享變量時(shí)的數(shù)據(jù)一致性,需要的朋友可以參考下
    2023-10-10
  • java編寫創(chuàng)建數(shù)據(jù)庫和表的程序

    java編寫創(chuàng)建數(shù)據(jù)庫和表的程序

    這篇文章主要為大家詳細(xì)介紹了java編寫創(chuàng)建數(shù)據(jù)庫和表的程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java基于servlet實(shí)現(xiàn)文件上傳功能解析

    java基于servlet實(shí)現(xiàn)文件上傳功能解析

    這篇文章主要為大家詳細(xì)介紹了java基于servlet實(shí)現(xiàn)上傳功能,后臺使用java實(shí)現(xiàn),前端主要是js的ajax實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2016-05-05
  • myeclipse安裝Spring Tool Suite(STS)插件的方法步驟

    myeclipse安裝Spring Tool Suite(STS)插件的方法步驟

    這篇文章主要介紹了myeclipse安裝Spring Tool Suite(STS)插件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹

    Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹

    這篇文章主要介紹了Spring?Data?JPA查詢方式及方法名查詢規(guī)則,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 親手教你IDEA2020.3創(chuàng)建Javaweb項(xiàng)目的步驟詳解

    親手教你IDEA2020.3創(chuàng)建Javaweb項(xiàng)目的步驟詳解

    這篇文章主要介紹了IDEA2020.3創(chuàng)建Javaweb項(xiàng)目的步驟詳解,本文是小編手把手教你,通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-03-03
  • SpringBoot輕松整合MongoDB的全過程記錄

    SpringBoot輕松整合MongoDB的全過程記錄

    這篇文章主要給大家介紹了關(guān)于SpringBoot輕松整合MongoDB的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論

兴和县| 三江| 依安县| 东兰县| 敦化市| 隆昌县| 亳州市| 高邑县| 聂拉木县| 同仁县| 平泉县| 东乌| 太白县| 南靖县| 永靖县| 凤山县| 天津市| 宕昌县| 上蔡县| 虹口区| 嘉黎县| 嘉善县| 军事| 天门市| 乐陵市| 奉化市| 玛沁县| 大同县| 洪江市| 禹城市| 西华县| 广宁县| 大名县| 社会| 彰化县| 邳州市| 集贤县| 兴城市| 通许县| 祥云县| 广水市|