Dubbo路由及负载均衡
https://my.oschina.net/vivotech/blog/10136865
客户端通过本地代理 Proxy 调用 ClusterInvoker,ClusterInvoker 从服务目录 Directory 获取服务列表后经过路由链获取新的服务列表、负载均衡从路由后的服务列表中根据不同的负载均衡策略选取一个远端 Invoker 后再发起远程 RPC 调用。
Dubbo 的路由机制实际是基于简单的责任链模式实现,同时 Router 继承了 Comparable 接口,自定义的路由可以设置不同的优先级进而定制化责任链上 Router 的顺序。基于责任链模式可以支持多种路由策略串行执行如就近路由 + 标签路由,或条件路由 + 就近路由等,且路由的配置支持基于接口级的配置也支持基于应用级的配置。常见的路由方式主要有:就近路由,条件路由,标签路由等
Dubbo 路由的核心类主要有:RouterChain、RouterFactory 与 Router 。
(1)RouterChain
RouterChain 是路由链的入口,其核心字段有
invokers(List<invoker> 类型)
初始服务列表由服务目录 Directory 设置,当前 RouterChain 要过滤的 Invoker 集合
builtinRouters(List 类型)
当前 RouterChain 包含的自动激活的 Router 集合
routers(List 类型)
包括所有要使用的路由由 builtinRouters 加上通过 addRouters () 方法添加的 Router 对象
(2)RouterFactory 为 Router 的工厂类
@SPI
public interface RouterFactory {
@Adaptive("protocol")
Router getRouter(URL url);
}
(3)Router
Router 是真正的路由实现策略,由 RouterChain 进行调用,同时 Router 继承了 Compareable 接口,可以根据业务逻辑设置不同的优先级。
标签:RouterChain,Dubbo,RouterFactory,List,Router,路由 From: https://www.cnblogs.com/clarino/p/18558613