一、zookeeper宕机
zookeeper注册中心宕机,还可以消费dubbo暴露的服务
健壮性:
二、dubbo直连
在开发和测试环境中,通常需要绕过注册中心,只测试指定的服务提供者。在这种情况下,可能需要点对点直接连接,而服务提供者将忽略提供商注册提供程序的列表。接口A配置点对点,不影响B接口从注册表获取列表.
2.1 用xml配置
<dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />
2.2 配置 -d
将-D参数映射服务地址添加到JVM启动参数:
java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890
2.3 配置.properties档案(详情请参考官网)
三、集群下的dubbo负载均衡配置
dubo提供了许多用于集群负载平衡的平衡策略,这些策略默认为random
.
3.1 Random LoadBalance 随机负载均衡
3.2 RoundRobin LoadBalance 轮询负载均衡
3.3 LeastActive LoadBalance 最少活动负载均衡
actives
意味着消费者已发送但尚未返回的请求的数字。actives
.3.4 ConsistentHash LoadBalance 连续散列负载均衡
3.5 配置
3.5.1 服务器服务级别
<dubbo:service interface="..." loadbalance="roundrobin" />
3.5.2 客户服务级别
<dubbo:reference interface="..." loadbalance="roundrobin" />
3.5.3 服务器方法级
<dubbo:service interface="..."> <dubbo:method name="..." loadbalance="roundrobin"/> </dubbo:service>
3.5.4 客户端方法级
<dubbo:reference interface="..."> <dubbo:method name="..." loadbalance="roundrobin"/> </dubbo:reference>
四、服务降级
4.1 什么是服务降级
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。
可以通过服务降级临时屏蔽非关键服务,并为其定义返回策略
将动态配置规则发布到注册表:
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null"));
配置mock=force:return+null
这意味着该服务的所有调用都将直接返回NULL值,而不进行远程调用。通常用于减少某些缓慢的非关键服务的影响。
此外,您还可以将该配置更改为mock=fail:return+null
在调用失败后,您将获得空值。使用者将尝试进行远程调用,如果调用成功,将获得真实的结果;如果调用失败,则将获得空值。通常用于容忍某些非关键服务。
五、集群容错
在集群调用失败时,dubo提供了各种容错方案,默认的Failover Cluster(故障转移重试)。
5.1集群容错模式
1.Failover Cluster
失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。
重试次数配置如下:
<dubbo:service retries="2" />
或
<dubbo:reference retries="2" />
或
<dubbo:reference> <dubbo:method name="findFoo" retries="2" /> </dubbo:reference>
2.Failfast Cluster
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
3.Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
4.Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
5.Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。
6.Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错 。通常用于通知所有提供者更新缓存或日志等本地资源信息。
5.2 集群模式配置
按照以下示例在服务提供方和消费方配置集群模式
<dubbo:service cluster="failsafe" />
或
<dubbo:reference cluster="failsafe" />
原文:https://www.cnblogs.com/xiao-ran/p/12013899.html