Skip to main content
Version: 2.4.0

自定义负载均衡策略

说明#

  • 在自定义开发前,请先自定义搭建好网关环境,请参考: 自定义部署

  • 本文介绍如何对 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'    );