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–>服务目录查找–>路由机制–>负载均衡机制–>调用委托–>调用监听器。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!