dubbo自定义路由规则实际应用

本文介绍了在Dubbo中如何根据特定场景实现自定义路由规则。通过实现Router接口并重写route方法,从注册中心获取的服务提供者列表中筛选符合要求的节点,避免了随机选择服务提供者的局限。此外,还探讨了一种通过调整软负载均衡策略来达到类似目标的取巧方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到这么个场景:由于多个业务系统都实现了同一个服务,在调用中通过读取相关配置可以知道此次调用是限制请求到哪几个服务提供者上,而不是所有提供者中任取一个,这个就需要在dubbo上自定义自己的路由规则。


具体做法:实现Router接口,重写route方法,从注册中心所有服务提供者列表中选出符合规范的提供者列表并返回即可。

/**
 * @author zhuangguoshuai
 * @description  自定义路由规则,根据配置的limitIp找到对应的providerList
 * @create 2017-10-19 17:01
 **/
public class LimitIpRouter implements Router{
    private final static Logger logger = LogManager.getLogger(LimitIpRouter.class);
    @Override
    public List<Provider> route(Invocation invocation, List<Provider> providers) {
        providers.stream().forEach(provider -> logger.info("provider:"+provider.toUrl()));
        //获取参数中的限制ip列表
        String limitIps = getLimitIps(invocation);
        return providers.stream().filter(provider -> StringUtils.contains(limitIps, provider.getIp())).collect(Collectors.toList());
    }

    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值