天天看點

自定義随機ribbon負載均衡

自定義随機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)

自定義随機ribbon負載均衡

(2)

自定義随機ribbon負載均衡

以上就是自定義随機ribbon負載均衡實作過程,歡迎大家閱讀與指正。

(你的每個點贊、評論和關注,都将是部落客前進的動力)