14.consumer端调用链

示意图

 +----------------------+     +----------------+      +---------------------------+
 | helloService         |     |      proxy     |      |  InvokerInvocationHandler |
 | sayHello             +---> |      sayHello  +------>  invoke                   |
 |                      |     |                |      |  proxy method args        |
 +----------------------+     +----------------+      +-------------+-------------+
                                                                    |
                                                                    |
                                                     +------------------------------+
                                                     |              |               |
                                                     | +------------v---------------+
                                                     | |  MockClusterInvoker       ||
                                                     | |  invoke                   ||
                                                     | |                           ||
                                                     | +------------+---------------+
                                                     |              |               |
                                                     |              |               |
                                                     |              |               |
  +---------------------+     +-------------------+  | +------------v---------------+
  | Router              |     | RegistryDirectory |  | |  FailoverClusterInvoker   ||
  | route               <-----+ list              <--+    invoke                   ||
  | MockInVokersSelector|     | INVOCATION+-      |  | |                           ||
  +------+--------------+     | ^List INVOKER     |  | +----------------------------+
         |                    +-------------------+  |                              |
         |                                           +------------------------------+
         |                                        cluster invoke,分布式调用容错机制也是在这做
         |
         |
         |
         |
         |
+--------v-------------+      +----------------+       +---------------------------+
|RandomLoadBalance     |      |InvokerDelegate |       | ListenerInvokerWrap       |
|select                +----> |invoke          +-------> invoke                    |
|List INVOKER+-^INVOKER|      |                |       |                           |
+----------------------+      +----------------+       +---------------------------+

RegistryProtocol 注册中心协议 对接口协议接口约束,不论何种注册中心都走这个实现。
RegistryDirectory 提供由服务目录查找出真正能提供服务的所有提供方
Registry 各个注册中心的实现的接口约束,具体实现有 RedisRegistry ZookeeperRegistry MulticastRegistry DubboRegistry。 主要完成注册这个逻辑。 就是把自己的信息写入注册中心。
Cluster 多服务提供方的一个封装 。他们负责创建多服务调用者实例。 比如FailoverCluster负责创建FailoverClusterInvoker实例。Cluster的实现是以分布式容错机制Failover,Failfast,Failback等这些维度进行。 对应invoker也是按照这个维度划分,比如FailbackClusterInvoker,FailfastClusterInvoker,BroadcastClusterInvoker等等。
Router 路由机制
LoadBalance 负载均衡机制
Invoker 调用者。 按分布式容错机制的维度进行划分了多个实现,与 Cluster实现一一对应。
基本上描述了 由consumer的ref类–>proxy–>InvokerInvocationHandler–>clusterinvoker–>服务目录查找–>路由机制–>负载均衡机制–>调用委托–>调用监听器。