目次
1. pom.xml を変更し、リボンを無効にし、ロードバランサーの依存関係を導入します。
1. 依存関係の導入
リボンはクライアント負荷分散の実装です。
nacos にはすでにリボンが統合されているため、依存関係を個別に導入する必要はありません。
2、使用する
1. config クラスを介して
新しい構成クラスを作成し、アプリケーションに注釈を追加します (次の図のコメントアウトされたコードを参照)。
package com.wind.ribbon;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author dongguanghui
* @date 2023/5/17 15:15
*/
@Configuration
public class RibbonRandomRuleConfig {
// 方法名一定要是iRule
@Bean
public IRule iRule(){
return new RandomRule();
}
}
2. yml 設定を通じて
独自のストラテジーを使用する場合は、クラス名を直接記述します。
カスタム戦略を使用する場合は、カスタム戦略を実装する必要があります。
カスタム ポリシー コードの例 (AbstractLoadBalancerRule を継承する必要があります)。
package com.wind.ribbon.rule;
import com.alibaba.nacos.client.naming.utils.ThreadLocalRandom;
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;
/**
* 方式三 自定义负载均衡策略
* @author dongguanghui
* @date 2023/5/17 15:53
*/
public class CustomRule extends AbstractLoadBalancerRule {
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
public Server choose(Object key) {
// 获得当前请求的服务实例
ILoadBalancer loadBalancer = this.getLoadBalancer();
List<Server> reachableServers = loadBalancer.getReachableServers();
int random = ThreadLocalRandom.current().nextInt(reachableServers.size());
Server server = reachableServers.get(random);
return server;
}
}
3. 遅延読み込み
デフォルトは遅延ロードであり、インターフェイスは初めてロードされます。
ハンガー ローディングを構成できます。つまり、サービスの開始時にサービスが読み込まれるため、最初の呼び出し時に発生する可能性のある読み込み時間の問題を回避できます。
4. リボンの代わりにローバランサーを使用する
1. pom.xml を変更し、リボンを無効にし、ロードバランサーの依存関係を導入します。
<?xml version="1.0"coding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>alibaba</artifactId> <groupId>com.wind.springcloud</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0。0</modelVersion> <artifactId>order-loadbalancer</artifactId> <dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- nacos服务注册発行现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions > <!-- 去除ribbon--> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </exclusion> </exclusions> < /依存関係> <!-- ロードバランサーの依存関係を追加 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> </依存関係> </プロジェクト>
2.ymlでロードバランサーの統合リボンを無効にする