自定义负载均衡策略
说明
-
在自定义开发前,请先自定义搭建好网关环境,请参考: 自定义部署
-
本文介绍如何对
org.apache.shenyu.plugin.divide.balance.LoadBalance进行自定义扩展。
扩展实现
- 新增一个类
${you class},实现org.apache.shenyu.plugin.divide.balance.LoadBalance
public class ${you class} implements LoadBalance {
/**
* 从上游列表中选择一个服务返回
*
* @param upstreamList 上游列表
* @param ip 请求的远程地址
* @return divide upstream
*/
@Override
public DivideUpstream doSelect(final List<DivideUpstream> upstreamList,
final String ip) {
//开发你的选择逻辑,返回结果
}
}
- 在项目
resources目录下,新建META-INF/shenyu目录, 并且新增文件名为 :org.apache.shenyu.plugin.divide.balance.LoadBalance. 内容新增${you spi name}=${you class path}:
${you spi name} = ${you class path}
- 在
Admin后台 ---> 基础管理 ---> 字典管理 , 找到字典编码为LOAD_BALANCE,新增一条数据,注意字典名称要为:${you spi name}。
- 或者执行以下自定义
SQL语句:
INSERT IGNORE INTO `shenyu_dict` (
`id`,
`type`,
`dict_code`,
`dict_name`,
`dict_value`,
`desc`,
`sort`,
`enabled`,
`date_created`,
`date_updated`
)
VALUES (
'you id',
'matchMode',
'MATCH_MODE',
'you spi name',
'you value',
'you spi name',
0,
1,
'2021-08-30 19:29:10',
'2021-08-30 20:15:23'
);