本地暴露
上一篇中微服务架构之Dubbo服务发布(1)我们提到本地暴露,是在exportLocal(URL url)中
传进来的url如图所示
Keep Moving, Keep Learning
这一部分主要梳理Dubbo的服务发布的原理,会涉及dubbo-config等模块内容,从以下几个方面来一步一步深入学习。
dubbo-config模块包括dubbo-config-api 和dubbo-config-spring 。
dubbo-config-api中重要的类包括ReferenceConfig和ServiceConfig,分别处理消费端的配置(服务引用)和提供服务端的配置(服务发布)
dubbo-config-spring 主要是扩展spring配置标签的扩展;
以 Invoker 为中心,从 Cluster, Directory, Router, LoadBalance,来解析各个接口。
dubbo提供4种负载均衡策略,根据其思想我做了一个简单的实现,见负载均衡算法。
随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
以 Invoker 为中心,从 Cluster, Directory, Router, LoadBalance,来解析各个接口。
Router 负责从多个 Invoker 中按路由规则选出子集,比如读写分离,应用隔离等。下图是dubbo-admin的配置界面。
以 Invoker 为中心,从 Cluster, Directory, Router, LoadBalance,来解析各个接口。
目录服务Directory, 代表多个Invoker, 可以看成List
Directory的接口定义
|
|
dubbo提供了服务降级的策略,我们首先看一下mock机制的降级原理,下面我们从源码的角度分析其调用过程。
mock支持的配置大体分为2类,一类用于屏蔽,一类用于容错。可以通过dubbo-admin控制台下发配置。
这里我们只关注配置文件的使用。