亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

Spring Cloud 系列之負載均衡 Ribbon的示例代碼

瀏覽:45日期:2023-08-03 18:46:05

1.1 簡介

1.1.1 概述

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

1.1.2 相關依賴

  因為現在的注冊中心幫我們引入了 Ribbon 我們不需要再次引入就可以直接使用,當然也可以再引入一次沒有影響。

Spring Cloud 系列之負載均衡 Ribbon的示例代碼

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

1.2 簡單使用

1.2.1 搭建項目

☞ eureka 項目

1.2.2 開啟負載均衡

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

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

1.2.3 使用負載均衡

/** * 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); }}

  喔嚯!報錯了,明明可以訪問到為什么會報找不到實例呢?這是應為咱們使用 DiscoveryClient 直接獲取到了服務提供者集群中某一個的地址,然后讓 RestTemplate 去進行負載均衡。我們都已經拿到了準確地址再怎么進行負載均衡?所以我們這里不能使用 IP 要使用服務名稱。

Spring Cloud 系列之負載均衡 Ribbon的示例代碼Spring Cloud 系列之負載均衡 Ribbon的示例代碼

@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); }}

修改完畢之后就可以看到服務提供者是輪換進行提供服務的

Spring Cloud 系列之負載均衡 Ribbon的示例代碼

1.3 替換負載均衡策略

1.3.1 自帶負載均衡策略

Spring Cloud 系列之負載均衡 Ribbon的示例代碼

策略名 策略描述 RoundRobinRule 輪詢選擇 server RandomRule 隨機選擇一個 serve RetryRule 先按輪詢策略獲取服務,如果獲取服務失敗則在指定時間內重試,獲取可用服務 BestAvailableRule 會先過濾由于多次訪問故障而處于斷路器跳閘狀態的服務,然后選擇一個并發量最小的服務 AvailabilityFilteringRule 會優先過濾故障實例,再選擇并發較小的實例 WeightedResponseTimeRule 對輪詢的擴展,響應速度越快的實例選擇比重權越大,越容易被選擇 ZoneAvoidanceRule 復合判斷 server 所在區域的性能和 server 的可用性選擇 server

1.3.2 使用配置類

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

@Configurationpublic class MyRibbonRule { @Bean public IRule ribbonRule() { return new RandomRule(); }}

@SpringBootApplication@EnableDiscoveryClient// 用 name 來指定調用的服務名稱,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(); }}

Spring Cloud 系列之負載均衡 Ribbon的示例代碼

1.3.3 配置文件

# 這種配置的優先級低于配置類# 想要調用的服務名稱,即服務提供者名稱ProviderServer: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Spring Cloud 系列之負載均衡 Ribbon的示例代碼

☞ 源碼

到此這篇關于Spring Cloud 系列之負載均衡 Ribbon的示例代碼的文章就介紹到這了,更多相關Spring Cloud 負載均衡 Ribbon內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 亚洲欧美另类在线视频 | 亚洲第一中文字幕 | 狠狠色噜噜狠狠狠米奇9999 | 欧美亚洲中日韩中文字幕在线 | 国内精品国语自产拍在线观看55 | 国产在线视频一区二区三区 | 99视频福利 | 成人三级在线播放 | 1024香蕉视频在线播放 | 亚洲欧美日韩一级特黄在线 | 色香欲综合成人免费视频 | 99精品偷自拍 | 国产年成美女网站视频免费看 | 亚洲精品视频免费在线观看 | 成人精品视频在线观看 | 国产91在线 | 亚洲 | 免费国产精品视频 | 精品一区视频 | 国产精品毛片无码 | 亚洲风情第一页 | 国产国语在线播放视频 | 三级网址在线 | 欧美性毛片大片 | 99re在线视频精品 | 日韩欧美一区二区三区在线 | 久久久亚洲天堂 | 免费在线观看a级片 | 九九手机视频 | 亚洲欧美卡通动漫丝袜美腿 | 亚洲高清在线观看看片 | 免费国产不卡午夜福在线观看 | 手机看片国产欧美日韩高清 | 国产中文字幕在线观看 | 国产1级片| 欧美一级手机免费观看片 | 亚洲午夜国产精品 | 91色综合综合热五月激情 | 黄色亚洲网站 | 欧美毛片a级毛片免费观 | 91欧美视频 | 日本a一级片 |