欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:java 02-Ribbon

柚子快報(bào)邀請碼778899分享:java 02-Ribbon

http://yzkb.51969.com/

什么是Ribbon?

Ribbon 是 Netflix 開源的一個(gè)基于 HTTP 和 TCP 的客戶端負(fù)載均衡器,被廣泛用于微服務(wù)架構(gòu)中的服務(wù)調(diào)用。它通過在客戶端內(nèi)部實(shí)現(xiàn)負(fù)載均衡算法,將請求按照一定的策略分發(fā)給多個(gè)服務(wù)提供者,以實(shí)現(xiàn)請求的高可用和均衡分配。

Ribbon 的主要特點(diǎn)和功能包括:

負(fù)載均衡:Ribbon 可以根據(jù)一定的負(fù)載均衡策略,將請求分發(fā)給多個(gè)服務(wù)提供者。它支持的負(fù)載均衡算法包括隨機(jī)、輪詢、權(quán)重等,可以根據(jù)應(yīng)用場景和需求進(jìn)行配置。 服務(wù)發(fā)現(xiàn):Ribbon 可以與注冊中心(如 Eureka、Consul 等)集成,從注冊中心獲取可用的服務(wù)實(shí)例列表,以便進(jìn)行負(fù)載均衡。 容錯(cuò)處理:Ribbon 具備容錯(cuò)處理的能力,當(dāng)某個(gè)服務(wù)提供者不可用時(shí),它會自動(dòng)切換到其他可用的服務(wù)提供者。同時(shí),Ribbon 還支持超時(shí)設(shè)置與重試,以提升系統(tǒng)的可靠性和容錯(cuò)能力。 自定義配置:Ribbon 提供了豐富的配置項(xiàng),可以進(jìn)行負(fù)載均衡和容錯(cuò)策略的配置,包括超時(shí)設(shè)置、重試次數(shù)、連接池大小等。

一、負(fù)載均衡策略

1.輪詢策略

輪詢策略:RoundRobinRule,按照一定的順序依次調(diào)用服務(wù)實(shí)例。比如一共有 3 個(gè)服務(wù),第一次調(diào)用服務(wù) 1,第二次調(diào)用服務(wù) 2,第三次調(diào)用服務(wù)3,依次類推。此策略的配置設(shè)置如下:

2.權(quán)重策略

權(quán)重策略:WeightedResponseTimeRule,根據(jù)每個(gè)服務(wù)提供者的響應(yīng)時(shí)間分配一個(gè)權(quán)重,響應(yīng)時(shí)間越長,權(quán)重越小,被選中的可能性也就越低。它的實(shí)現(xiàn)原理是,剛開始使用輪詢策略并開啟一個(gè)計(jì)時(shí)器,每一段時(shí)間收集一次所有服務(wù)提供者的平均響應(yīng)時(shí)間,然后再給每個(gè)服務(wù)提供者附上一個(gè)權(quán)重,權(quán)重越高被選中的概率也越大。此策略的配置設(shè)置如下:

3.隨機(jī)策略

隨機(jī)策略:RandomRule,從服務(wù)提供者的列表中隨機(jī)選擇一個(gè)服務(wù)實(shí)例。此策略的配置設(shè)置如下:

4.最小連接數(shù)策略

最小連接數(shù)策略:BestAvailableRule,也叫最小并發(fā)數(shù)策略,它是遍歷服務(wù)提供者列表,選取連接數(shù)最小的?個(gè)服務(wù)實(shí)例。如果有相同的最小連接數(shù),那么會調(diào)用輪詢策略進(jìn)行選取。此策略的配置設(shè)置如下:

5.重試策略

重試策略:RetryRule,按照輪詢策略來獲取服務(wù),如果獲取的服務(wù)實(shí)例為 null 或已經(jīng)失效,則在指定的時(shí)間之內(nèi)不斷地進(jìn)行重試來獲取服務(wù),如果超過指定時(shí)間依然沒獲取到服務(wù)實(shí)例則返回 null。此策略的配置設(shè)置如下:

6.可用性敏感策略

可用敏感性策略:AvailabilityFilteringRule,先過濾掉非健康的服務(wù)實(shí)例,然后再選擇連接數(shù)較小的服務(wù)實(shí)例。此策略的配置設(shè)置如下:

7.區(qū)域敏感策略

區(qū)域敏感策略:ZoneAvoidanceRule,根據(jù)服務(wù)所在區(qū)域(zone)的性能和服務(wù)的可用性來選擇服務(wù)實(shí)例,在沒有區(qū)域的環(huán)境下,該策略和輪詢策略類似。此策略的配置設(shè)置如下:

二、配置方式

Bean配置 @Configuration

public class Ribbonconfig {

@Bean

public IRule iRule (){

//對應(yīng)上面的負(fù)載均衡策略

return new RandomRule();

}

}

@SpringBootApplication

@RibbonClients(defaultConfiguration = Ribbonconfig.class)

public class ApplicationLoader {

public static void main(String[] args) {

SpringApplication application = new SpringApplication(ApplicationLoader.class);

application.run(args);

}

@LoadBalanced

@Bean

public RestTemplate restTemplate() {

return new RestTemplate();

}

} 配置文件配置 server:

port: 9002

spring:

application:

name: stock-nacos

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:9100

config:

import:

- nacos:nacos-config-example.properties?refresh=true

order-nacos: //被調(diào)用服務(wù)

ribbon:

NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule //負(fù)載均衡類

三、自定義Ribbon

import com.netflix.client.config.IClientConfig;

import com.netflix.loadbalancer.AbstractLoadBalancerRule;

import com.netflix.loadbalancer.ILoadBalancer;

import com.netflix.loadbalancer.Server;

import java.util.List;

import java.util.concurrent.ThreadLocalRandom;

public class CustomRule extends AbstractLoadBalancerRule {

@Override

public void initWithNiwsConfig(IClientConfig iClientConfig) {

}

@Override

public Server choose(Object o) {

//獲取當(dāng)前的負(fù)載均衡器

ILoadBalancer loadBalancer = this.getLoadBalancer();

//獲取所有可達(dá)的服務(wù)器列表

List reachableServers = loadBalancer.getReachableServers();

//隨機(jī)生成一個(gè)在可達(dá)服務(wù)器列表大小范圍內(nèi)的整數(shù)

int i = ThreadLocalRandom.current().nextInt(reachableServers.size());

//根據(jù)隨機(jī)生成的整數(shù),從可達(dá)服務(wù)器列表中選擇一個(gè)服務(wù)器。

Server server = reachableServers.get(i);

//返回選中的服務(wù)器

return server;

}

}

四、配置懶加載

ribbon:

eager-load:

enabled: true //開啟懶加載

clients: order-nacos //被調(diào)用服務(wù)

懶加載解決了什么問題?

Ribbon 懶加載是一種優(yōu)化技術(shù),用于解決在應(yīng)用程序啟動(dòng)時(shí),同時(shí)初始化所有 Ribbon 客戶端可能導(dǎo)致的性能問題。

當(dāng)應(yīng)用程序中配置了多個(gè) Ribbon 客戶端時(shí),每個(gè)客戶端在初始化時(shí)都會創(chuàng)建一組實(shí)例,這些實(shí)例會預(yù)先連接到服務(wù)提供者。如果所有的客戶端都同時(shí)初始化,可能會導(dǎo)致大量的線程和連接同時(shí)被創(chuàng)建,從而導(dǎo)致資源浪費(fèi)和性能下降。

使用 Ribbon 的懶加載機(jī)制后,Ribbon 客戶端在首次請求時(shí)才會被初始化。這樣可以避免在應(yīng)用程序啟動(dòng)時(shí)一次性創(chuàng)建所有的實(shí)例,而是根據(jù)請求的實(shí)際情況動(dòng)態(tài)地初始化和連接服務(wù)提供者。這樣能夠更好地利用資源,提高應(yīng)用程序的性能和可伸縮性。

另外,懶加載還可以解決服務(wù)注冊中心不可用或服務(wù)提供者不可用時(shí),無法初始化 Ribbon 客戶端的問題。因?yàn)楫?dāng)服務(wù)注冊中心或者服務(wù)提供者不可用時(shí),Ribbon 會等待它們可用后再進(jìn)行初始化,從而避免了在啟動(dòng)時(shí)因?yàn)橐蕾嚥豢捎枚鴮?dǎo)致應(yīng)用程序啟動(dòng)失敗的情況。

柚子快報(bào)邀請碼778899分享:java 02-Ribbon

http://yzkb.51969.com/

相關(guān)文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18692192.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄