柚子快報(bào)激活碼778899分享:Ribbon
柚子快報(bào)激活碼778899分享:Ribbon
1、負(fù)載均衡策略
輪詢策略(RoundRobinRule) 這是默認(rèn)的策略,按照順序依次選擇服務(wù)實(shí)例進(jìn)行處理。例如,如果有三個(gè)服務(wù)實(shí)例,那么第N次請求將會(huì)被分配到序號為(N mod 3)的服務(wù)實(shí)例上。輪詢策略簡單且平等地分配請求,適用于服務(wù)器處理能力相近的場景。隨機(jī)策略(RandomRule) 這種策略從可用的服務(wù)實(shí)例列表中隨機(jī)選擇一個(gè)來處理請求。由于選擇是隨機(jī)的,因此每個(gè)服務(wù)實(shí)例都有可能被選中,這有助于在某些情況下避免過多請求集中到某一特定實(shí)例。響應(yīng)速度加權(quán)策略(WeightedResponseTimeRule) 該策略根據(jù)服務(wù)實(shí)例的響應(yīng)時(shí)間動(dòng)態(tài)計(jì)算權(quán)重,響應(yīng)時(shí)間越短的實(shí)例權(quán)重越高,從而有更大幾率被選中。這種策略適用于處理能力不同的服務(wù)實(shí)例集群,通過實(shí)時(shí)監(jiān)控響應(yīng)時(shí)間,自動(dòng)調(diào)整負(fù)載分配,優(yōu)化整體性能。最優(yōu)可用策略(BestAvailableRule) 此策略會(huì)選取當(dāng)前連接數(shù)最少的服務(wù)實(shí)例。連接數(shù)較少意味著服務(wù)的負(fù)載較輕,這樣的分配可以進(jìn)一步均衡各個(gè)服務(wù)的負(fù)載,避免某些服務(wù)因連接過多而變得緩慢或不可用。可用性過濾策略(AvailabilityFilteringRule) 首先會(huì)過濾掉不可用的服務(wù)實(shí)例,然后在剩余的服務(wù)中選擇并發(fā)連接數(shù)最少的一個(gè)。這種策略結(jié)合了對服務(wù)可用性的考量和負(fù)載均衡的需求,提升了系統(tǒng)的健壯性和用戶體驗(yàn)。區(qū)域內(nèi)可用性能優(yōu)先策略(ZoneAvoidanceRule) 在考慮服務(wù)可用性的基礎(chǔ)上,還會(huì)優(yōu)先考慮特定區(qū)域(zone)內(nèi)服務(wù)的可用性。這種策略適用于跨區(qū)域部署的服務(wù)集群,能夠優(yōu)先調(diào)用同一區(qū)域內(nèi)的服務(wù),降低延遲,提升效率。重試策略(RetryRule) 當(dāng)選定的服務(wù)實(shí)例無法處理請求時(shí),會(huì)自動(dòng)換一個(gè)新的服務(wù)實(shí)例重試。這種策略適用于需要高可靠性的系統(tǒng)中,即使某個(gè)服務(wù)暫時(shí)不可用,也能通過快速切換保障業(yè)務(wù)的持續(xù)運(yùn)行。
2、修改默認(rèn)負(fù)載均衡策略
1)第一種方式
新增config PS:不能寫在@SpringbootApplication注解的@CompentScan掃描得到的地方,否則會(huì)被所有的RibbonClients共享
package com;
import com.alibaba.cloud.nacos.ribbon.NacosRule;
import com.netflix.loadbalancer.IRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RibbonConfig {
@Bean
public IRule iRule() {
return new NacosRule();
}
}
啟動(dòng)類上新增注解,server-nacos是被調(diào)用方的名稱
@RibbonClients(value = {
@RibbonClient( name = "server-nacos", configuration = RibbonConfig.class)
})
2)第二種方式
配置application.yml
# 被調(diào)用的服務(wù)名
server-nacos:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
3、自定義策略
新增策略
package com.zzuhai.client.ribbonrule;
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 NacosCustomRule extends AbstractLoadBalancerRule {
@Override
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
@Override
public Server choose(Object o) {
ILoadBalancer loadBalancer = this.getLoadBalancer();
// 獲取所有實(shí)例
List
// 獲取隨機(jī)數(shù)
int random = ThreadLocalRandom.current().nextInt(reachableServers.size());
return reachableServers.get(random);
}
}
修改application.yml
# 被調(diào)用的服務(wù)名
server-nacos:
ribbon:
NFLoadBalancerRuleClassName: com.zzuhai.client.ribbonrule.NacosCustomRule
4、配置項(xiàng)目啟動(dòng)加載
默認(rèn)是懶加載,調(diào)用的時(shí)候才加載,第一次調(diào)用的時(shí)候可能很慢
新增配置,修改成啟動(dòng)時(shí)候加載
ribbon:
eager‐load:
# 開啟ribbon饑餓加載
enabled: true
# 使用ribbon饑餓加載,多個(gè)使用逗號分隔
clients: server-nacos
柚子快報(bào)激活碼778899分享:Ribbon
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。