Dubbo调度机制解析(cluster扩展或者路由扩展)

1.      更详细的duboo的集群路由和负载均衡机制分析

首先进入XXClusterInvoker类:

invoke(final Invocation invocation)-> Directory.list(invocation)

进入XXDirectory(RegistryDirectory)类:

list(invocation)->doList(Invocation invocation)-> router.route(invokers,getConsumerUrl(), invocation);

进入XXRouter类:

route(List> invokers, URL url,Invocation invocation)

返回XXClusterInvoker类:

->doInvoke(Invocation invocation, final List>invokers, LoadBalance loadbalance)-> select(LoadBalance loadbalance,Invocation invocation, List> invokers,List> selected)-> doselect(LoadBalance loadbalance,Invocation invocation, List> invokers,List>)-> loadbalance.select(invokers, getUrl(),invocation);

进入XX loadbalance类:

-> doSelect(List> arg0, URL arg1,Invocation arg2)

 

---整个cluster的调度流程总体如上述

 

2.在这个流程中我们可以对三到四个层面进行扩展重写

         (1)Cluster和ClusterInvoker

         (2)Directory

         (3)Router

         (4)loadbalance

--其中(1)和(4)已经实践过没问题,(2)和(3)的扩展没试过,尤其是router的扩展貌似不能直接在XML配置文件上使用,而是要手工写到注册中心。

你可能感兴趣的:(大数据)