六、Dubbo框架源码分析:dubbo常见配置使用场景

一、启动是否检查:check=false reference 、consumer、registry

 使用spring配置文件

1.禁用服务的启动检查(未提供提供程序时引发一些异常/错误):

2.禁用所有服务的启动检查(未提供时会引发一些异常/错误):

3.禁用注册中心启动检查(注册订阅失败错误):

通过 dubbo.properties

dubbo.reference.com.foo.BarService.check=false

dubbo.reference.check=false

dubbo.consumer.check=false

dubbo.registry.check=false

通过 -D 参数

java -Ddubbo.reference.com.foo.BarService.check=false

java -Ddubbo.reference.check=false

java -Ddubbo.consumer.check=false

java -Ddubbo.registry.check=false


二、集群容错策略:调用失败了怎么办?

1.Failfast Cluster

快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

2.Failsafe Cluster

失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

3.Failback Cluster

失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

4.Forking Cluster

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

5.Broadcast Cluster

广播调用所有提供者,逐个调用,任意一台报错则报错 [2]。通常用于通知所有提供者更新缓存或日志等本地资源信息。


三.配置负载均衡策略?多台服务如何路由

loadblance=roundrobin

1.客户单负载的场景模式:

1.Random LoadBalance

随机,按权重设置随机概率。

在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

2.RoundRobin LoadBalance

轮询,按公约后的权重设置轮询比率。

存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

3.LeastActive LoadBalance

最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。

使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

4.ConsistentHash LoadBalance

一致性 Hash,相同参数的请求总是发到同一提供者。

当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

算法参见:http://en.wikipedia.org/wiki/Consistent_hashing

缺省只对第一个参数 Hash,如果要修改,请配置 

缺省用 160 份虚拟节点,如果要修改,请配置 


四.直连提供者,方便测试


五.服务分组

group="feedback" interface="com.xxx.IndexService" />

group="feedback" interface="com.xxx.IndexService" />


六、多协议

"helloService" protocol="dubbo" />


七、多注册中心

Dubbo 支持同一服务向多注册中心同时注册,或者不同服务分别注册到不同的注册中心上去,甚至可以同时引用注册在不同注册中心上的同名服务。另外,注册中心是支持自定义扩展的 。


八、多版本

当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。

可以按照以下的步骤进行版本迁移:

1. 在低压力时间段,先升级一半提供者为新版本

2. 再将所有消费者升级为新版本

3. 然后将剩下的一半提供者升级为新版本

老版本服务提供者配置:

新版本服务提供者配置:

老版本服务消费者配置:

新版本服务消费者配置:

如果不需要区分版本,可以按照以下的方式配置 :

你可能感兴趣的:(六、Dubbo框架源码分析:dubbo常见配置使用场景)