Custom Load Balancer
This paper describes how to customize the extension of
org.apache.shenyu.loadbalancer.spi.LoadBalancer.Create a new project and introduce the following dependencies:
<dependencies> <dependency> <groupId>org.apache.shenyu</groupId> <artifactId>shenyu-plugin-base</artifactId> <version>${project.version}</version> </dependency></dependencies>- Create a new class
CustomLoadBalancer, extendsorg.apache.shenyu.loadbalancer.spi.AbstractLoadBalancer.
public class CustomLoadBalancer extends AbstractLoadBalancer {
@Override public Upstream doSelect(final List<Upstream> upstreamList, final String ip) { // custom load balancer }}- In the project's META-INF/services directory, create key-value as following in
org.apache.shenyu.loadbalancer.spi.LoadBalancerfile.
${spi name}=${custom class path}${spi name} represents the name of spi and ${custom class path} represents the fully qualified name of the class. Such as:
custom=xxx.xxx.xxx.CustomLoadBalancerPackage the project and copy it to the
liborext-libdirectory of the gateway (bootstrap-bin).In the
Apache ShenYugateway management system --> BasicConfig --> Dictionary, find the dictionary code asLOAD_BALANCE, add a new piece of data, pay attention to the dictionary name:${spi name}.

DictionaryType:
loadBalance;DictionaryCode:
LOAD_BALANCE;DictionaryName:
${spi name}, input your custom spi name;DictionaryValue: When used, the value of the drop-down box, do not repeat with the existing;
DictionaryDescribe: desc your custom match strategy;
Sort: to sort;
- When adding selectors or rules, you can use custom MatchType:
