1. 调用dubbo接口

Dubbo接口调用源码解析

2. 反射获取方法名称、参数等,并判断是否是Object自带的方法(toString(), hashCode(), equals(String name)), 不是则调用RPC框架获取接口内容

Dubbo接口调用源码解析

Dubbo接口调用源码解析

3. 继续调用跟进

Dubbo接口调用源码解析

4. 获取服务提供者信息(多个接口会有多个Invoker对象,会进行负载均衡)

Dubbo接口调用源码解析

5. 负载均衡,有下图所示四种负载均衡策略

Dubbo接口调用源码解析

Dubbo接口调用源码解析

四种负载均衡策略

Dubbo接口调用源码解析

Dubbo接口调用源码解析

默认RandomLoadBalance,查看各个provider的权重,权重一致随机分配,否则按照权重依次分配

Dubbo接口调用源码解析

6. 获取接口内容

Dubbo接口调用源码解析

Dubbo接口调用源码解析

总结:

1. 通过注入的代理对象,反射获取调用的方法名及方法参数。判定方法是否是dubbo是定义的接口(排除toString(), hashCode(), equals(String name));

2. 通过RPC框架进行调用,从注册中心获取对应的Provider;

3. 当有多个Provider的时候,进行负载均衡(四种或以上均衡);

4. 调用获取结果。

 

以上为个人学习记录,如有错误,还望指正,加油。

相关文章: