dubbo自定义负载均衡策略及相关源码解析

背景

最近在研究即时消息推送系统(IM系统)的架构,自己用netty开发了基础网络通信部分,用来维护TCP连接,在客户端上线时将用户标识userId和路由信息存在redis中,通过dubbo向上层模块提供消息推送接口。

在上层消息转发路由模块设计时,遇到了一个问题,dubbo接口调用时要根据路由信息中的ip指定对应的provider服务器。研究了下资料发现可以通过dubbo SPI自定义负载均衡策略或者路由规则来实现,由于自定义路由规则没找到相关试例,自己试了下自定义负载均衡策略。

负载均衡扩展

实现dubbo提供的com.alibaba.dubbo.rpc.cluster.LoadBalance接口

public class IpLoadBalance implements LoadBalance {
   

    @Override
    public <T> Invoker<T> select(List<Invoker<T>> list, URL url, Invocation invocation) throws RpcException {
   
        // 遍历invoker,取IP和入参中相等的返回
        for (Invoker<T> invoker : list) {
   
            // invocation.getArguments()可以获取调用时的参数,此处[2]即为参数中的ip字段
            if (invoker.getUrl
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值