(二十) 跟我學習SpringCloud-Ribbon自定義負載均衡策略

通過實現 IRule 接口可以自定義負載策略,主要的選擇服務邏輯在 choose 方法中。我們這邊只是演示怎麼自定義負載策略,所以沒寫選擇的邏輯,直接返回服務列表中第一個服務。具體代碼如下所示。

public class MyRule implements IRule {

    private ILoadBalancer lb;

    @Override
    public Server choose(Object key) {
        List<Server> servers = lb.getAllServers();
        for (Server server : servers) {
            System.out.println(server.getHostPort());
        }
        return servers.get(0);
    }

    @Override
    public void setLoadBalancer(ILoadBalancer lb) {
        this.lb = lb;
    }

    @Override
    public ILoadBalancer getLoadBalancer() {
        return lb;
    }
}

在 Spring Cloud 中,可通過配置的方式使用自定義的負載策略,ribbon-config-demo 是調用的服務名稱。

ribbon-config-demo.ribbon.NFLoadBalancerRuleClassName=net.biancheng.ribbon_eureka_demo.rule.MyRule

重啓服務,訪問調用了其他服務的接口,可以看到控制檯的輸出信息中已經有了我們自定義策略中輸出的服務信息,並且每次都是調用第一個服務。這跟我們的邏輯是相匹配的。

推薦分佈式架構源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章