说明
自定义注册中心的实现类可参考 com.alipay.sofa.rpc.client.lb.RandomLoadBalancer。
自定义负载均衡的流程如下:
实现自定义负载均衡
自定义负载均衡类。
自定义负载均衡类时,需继承如下虚拟类:
package com.alipay.sofa.rpc.client; public abstract class AbstractLoadBalancer extends LoadBalancer { protected abstract ProviderInfo doSelect(SofaRequest invocation, List<ProviderInfo> providerInfos); //进行负载均衡 }
添加注解。
示例如下:
@Extension("shortestResponse") public class ShortestResponseLoadBalance extends AbstractLoadBalancer {
@Extension("")
用于指定负载均衡别名,可自定义。您可以在业务指定负载均衡算法时使用该别名。
将自定义负载均衡配置到 RPC 架构
基于 SOFARPC 的 SPI 机制,您需要新建扩展文件META-INF/services/sofa-rpc/
com.alipay.sofa.rpc.client.LoadBalancer
,将自定义的负载均衡类配置到 RPC 架构。内容示例如下:
shortestResponse=com.alipay.sofa.extend.loadbalance.ShortestResponseLoadBalance
在业务中使用自定义负载均衡
您可以在指定负载均衡算法时,使用自定义扩展的负载均衡别名。负载均衡算法及配置介绍请参见 负载均衡。
配置示例如下:
<sofa:reference interface="com.example.demo.SampleService" id="sampleService">
<sofa:binding.bolt>
<sofa:global-attrs loadBalancer="shortestResponse"/>
</sofa:binding.bolt>
</sofa:reference>
文档内容是否对您有帮助?