Solon2 接口开发: 了解 LoadBalance
创始人
2025-06-01 11:27:33

上一文的代码 HttpUtils.http(sevName, ctx.path()) (来自 “solon.cloud.httputils” 插件的工具类),内部是通过 sevName 获取对应服务负载均衡,并最终获取服务实例地址。内部接口调用:

//根据服务名获取“负载均衡”
LoadBalance loadBalance = LoadBalance.get(sevName);//根据分组和服务名获取“负载均衡”
LoadBalance loadBalance = LoadBalance.get(groupName, sevName);

负载均衡是 Rpc 开发和服务集群调用时,必不可少的元素。

1、了解负载均衡

内核层面提供了两个接口。插件中 “solon.cloud.httputils”,“nami” 都是使用它们对服务进行调用:

接口说明
LoadBalance负载均衡接口
LoadBalance.Factory负载均衡工厂接口

要获取一个服务的实例地址,只需要使用(在定制开发时,可能用得着):

//开发时要注意不存在服务的可能
LoadBalance loadBalance = LoadBalance.get(sevName);
//输出的结果,例:"http://12.0.1.2.3:8871" 、"ws://120.1.1.2:9871"(协议头://地址:端口)
String server = loadBalance.getServer();

2、负载均衡的能力实现

已有的实现方案是:“solon.cloud” 插件的 CloudLoadBalanceFactory。实现是无感知的,且是动态更新了(一般是实时或延时几秒)。引入 Solon Cloud Discovery 相关的组件,即可使用。

还可以根据需要,进行微略调整(一般没啥必要):

@Configuration
public class Config{@Beanpublic CloudLoadStrategy loadStrategy(){return new CloudLoadStrategyDefault(); //默认为轮询//return new CloudLoadStrategyIpHash(); //ip希哈}
}

更多的策略,可以自己定义。比如在 k8s 里直接使用 k8s sev 地址:

//关于策略自定义,v2.2.6 后支持
@Component
public class CloudLoadStrategyImpl impl CloudLoadStrategy{@Overridepublic String getServer(Discovery discovery){//即通过服务名,获取k8s的服务地址return K8sUtil.getServer(discovery.service());}
}

3、自定义负载均衡实现

  • 基于内核接口 “LoadBalance.Factory” 实现(一般是没必要自己搞)
//只是示意一下 //具体可以参考 CloudLoadBalanceFactory 实现
@Component
public class LoadBalanceFactoryImpl implements LoadBalance.Factory{@Overridepublic LoadBalance create(String group, String service){if("local".equals(service)){return LoadBalanceImpl();}}
}//只是示意一下 //具体可以参考 CloudLoadBalance 实现
public class LoadBalanceImpl implements LoadBalance{@Overridepublic String getServer(){return "http://127.0.0.1"}
}
  • 基于 “Solon Cloud Discovery” 接口实现
//找一个 Solon Cloud Discovery 适配插件参考下
public class CloudDiscoveryServiceImpl implements CloudDiscoveryService{...
}

相关内容

热门资讯

智谱7天暴涨250%,徐新爆赚... 马年首个交易日,有“全球大模型第一股”之称的智谱强势不改,表现更超节前,收涨超42%,市值突破320...
特朗普全球关税被推翻!美国最高... 美国总统特朗普遭遇他第二个任期内最大的法庭败绩,他的核心政策工具被最高法院裁定违法。据央视新闻,当地...
消费回暖!公募两大方式提前布局... 马年春节来临之际,低迷久日的消费板块,迎来小幅回暖。以泡泡玛特和老铺黄金为首的新消费,和以贵州茅台为...
贾跃亭献唱《不如见一面》,乐视... 贾跃亭深情告白女儿,乐视网欺诈发行等待开庭。作者 | 于婞 孙梦圆编辑丨高岩来源 | 野马财经大年初...
谷歌Gemini最“小”的一次... 人们还在津津乐道OpenAI和Anthropic两家公司的老板拒绝牵手,以至于握拳高举的滑稽画面,另...