(20)SpringCloud-Ribbon自定義負載均衡策略

JIAN2發表於2022-10-28

透過實現 IRule 介面可以自定義負載策略,主要的選擇服務邏輯在 choose 方法中。我們這邊只是演示怎麼自定義負載策略,所以沒寫選擇的邏輯,直接返回服務列表中第一個服務。具體程式碼如下所示。需要框架原始碼的朋友可以看我個人簡介聯絡我

[object Object]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
重啟服務,訪問呼叫了其他服務的介面,可以看到控制檯的輸出資訊中已經有了我們自定義策略中輸出的服務資訊,並且每次都是呼叫第一個服務。這跟我們的邏輯是相匹配的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2920786/,如需轉載,請註明出處,否則將追究法律責任。

相關文章