Dubbo中的Router组件及扩展实践

本文介绍了Dubbo的Router组件及其作用,详细阐述了服务列表的筛选过程,并提供了一个自定义Router的实践指南,包括实现自定义Router路由实现类和RouterFactory,以及Dubbo SPI配置的步骤。

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

目录

Router组件的作用

Router中的服务列表

筛选服务列表

自定义Router实践

自定义Router路由实现类

自定义RouterFactory实现类

Dubbo SPI配置


Dubbo 提供了下面六种 Router 的实现类,由对应的RouterFactory 加载而来。

Router组件的作用

Router中存放了服务提供者列表,在消费者调用过程中,Directory获取可用服务列表时需要通过Router筛选出符合路由规则的服务提供者作为可用于本次调用的服务列表,即Invoker集合。

Router中的服务列表

在消费者启动或者注册中心providers节点刷新后,Directory会收到通知并把最新的服务列表转换为Invoker存放到RegistryDirectory实例的invokers和urlInvokerMap中及其AbstractDirectory父类的routerChain中。

这一过程的实现在 RegistryDirectory#refreshInvoker()方法中,具体是在setInvokers()中

    public void setInvokers(List<Invoker<T>> invokers) {
        this.invokers = (invokers == null ? Collections.emptyList() : invokers);
        routers.forEach(router -> router.notify(this.invokers));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WannaRunning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值