自定義随機ribbon負載均衡
1.首先在rule包下定義一個CustomRule類,繼承自AbstractLoadBalancerRule
package com.example.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;
public class CustomRule extends AbstractLoadBalancerRule {
@Override
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;
}
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
}
2.在yml配置檔案中添加如下,主要是NFLoadBalancerRuleClassName添加自定義配置類路徑
server:
port: 8030
spring:
application:
name: order-ribbon
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
username: nacos
password: nacos
namespace: public
stock-service:
ribbon:
NFLoadBalancerRuleClassName: com.example.ribbon.rule.CustomRule
3.啟動nacos服務、訂單和庫存服務,通過http://localhost:8030/order/add去通路,發現随機調用不同的端口服務
(1)
(2)
以上就是自定義随機ribbon負載均衡實作過程,歡迎大家閱讀與指正。
(你的每個點贊、評論和關注,都将是部落客前進的動力)