1. 调用dubbo接口
2. 反射获取方法名称、参数等,并判断是否是Object自带的方法(toString(), hashCode(), equals(String name)), 不是则调用RPC框架获取接口内容
3. 继续调用跟进
4. 获取服务提供者信息(多个接口会有多个Invoker对象,会进行负载均衡)
5. 负载均衡,有下图所示四种负载均衡策略
四种负载均衡策略
默认RandomLoadBalance,查看各个provider的权重,权重一致随机分配,否则按照权重依次分配
6. 获取接口内容
总结:
1. 通过注入的代理对象,反射获取调用的方法名及方法参数。判定方法是否是dubbo是定义的接口(排除toString(), hashCode(), equals(String name));
2. 通过RPC框架进行调用,从注册中心获取对应的Provider;
3. 当有多个Provider的时候,进行负载均衡(四种或以上均衡);
4. 调用获取结果。
以上为个人学习记录,如有错误,还望指正,加油。