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

来源:互联网 发布:linux中的pwd命令 编辑:程序博客网 时间:2024/06/06 19:25

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<Invoker<T>> invokers, URL url,Invocation invocation)

返回XXClusterInvoker类:

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

进入XX loadbalance类:

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

 

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

 

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

         (1)Cluster和ClusterInvoker

         (2)Directory

         (3)Router

         (4)loadbalance

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

原创粉丝点击