我是靠谱客的博主 光亮镜子,最近开发中收集的这篇文章主要介绍dubbo高可用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、集群容错

1.服务路由

服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消
费者可调用哪些服务提供者,dubbo提供三种服务路由实现,分别为条件路由ConditionRouter、脚本路由ScriptRouter、标签路由TagRouter

1)条件路由规则的格式:
[服务消费者匹配条件] => [服务提供者匹配条件]
host = 10.20.153.10 => host = 10.20.153.11
该条规则表示 IP 为 10.20.153.10 的服务消费者只可调用 IP 为 10.20.153.11 机器上的服务,不可
调用其他机器上的服务。如果服务消费者匹配条件为空,表示不对服务消费者进行限制。如果服务提供者匹配条件为空,表示对某些服务消费者禁用服务

2)常见路由配置:
白名单:
host!=10.20.153.10,10.20.153.11=>
黑名单
host=10.20.153.10,10.20.153.11=>
读写分离
method=find,list,get,is=>host=172.22.3.94,172.22.3.95,172.22.3.96
method!=find,list,get,is=>host=172.22.3.97,172.22.3.98
前后台分离
application=front=>host=172.22.3.91,172.22.3.92,172.22.3.93
application!=front=>host=172.22.3.94,172.22.3.95,172.22.3.96

2.集群容错

1)Failover Cluster
失败自动切换,当出现失败,重试其它服务器。(缺省) 通常用于读操作,但重试会带来更长延迟。可通过 retries=“2” 来设置重试次数(不含第一次)。重试次数配置如下:<dubbo:service retries=“2” />或<dubbo:reference retries=“2” />
2)Failfast Cluster
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
3)Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入日志等操作。
4)Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。 通常用于消息通知操作。
5)Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过forks="2"来设置最大并行数。
6)Broadcast Cluster
广播调用所有提供者逐个调用,任意一台报错则报错,通常用于通知所有提供者更新缓存或日志等本地资源信息。

3.负载均衡 :

在集群负载均衡时,Dubbo提供多种均衡策略,缺省random随机调用
1)Random LoadBalance
按照权重设置随机概率,无状态。可以通过设置权重使节点按照臆想的配置负载
2)RoundRobin LoadBalance
轮询,有状态。节点间性能不一样可能会导致请求积压
3)LeastActive LoadBalance
最少活跃数随机,让处理能力慢的节点处理更少的请求
4)ConsistentHash LoadBalance
一致性Hash,可把相同的请求重定向在同个节点处理

二、 服务治理

1.服务降级

可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略,可以向注册中心写入动态配置覆盖规则

dubbo降级服务
使用dubbo在进行服务调用时,可能由于各种原因(服务器宕机/网络超时/并发数太高等),调用中就会出现RPCException,调用失败。服务降级就是指在由于非业务异常导致的服务不可用时,可以返回默认值,避免异常影响主业务的处理。
1)mock配置方式
dubbo官方文档上使用一个mock配置实现服务降级。mock只在出现非业务异常(比如超时/网络异常等)时执行。
mock配置支持两种:
一种为boolean值,默认是false。如果为true则缺省使用mock类名,即类名+Mock后缀;另外一种则是配置"return null",则忽略掉异常(全局统一控制)。
mock配置在服务调用方,服务降级不需要对服务方配置产生修改。如下图:
在这里插入图片描述
2)mock实现接口方式
上面的在配置中将"return null"改成"true"同时实现mock接口(类名规则:接口名+Mock后缀)。此时如果调用失败就会调用Mock实现类(确保有无参构造方法)
在这里插入图片描述

2.整合hystrix

hystrix旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能
1)springboot提供了对hystrix的集成,在pom.xml加入依赖
在这里插入图片描述
2)在主程序类上增加注解@EnableHystrix开启hystrix功能在这里插入图片描述
3)在服务提供者上增加@HystrixCommand调用就会经过hystrix代理
在这里插入图片描述
4)在服务消费者增加@HystrixCommand并指定出错时的回调方法。如下图,当调用出错时就会调用fallbackMethod="hello"指定的hello方法
在这里插入图片描述

最后

以上就是光亮镜子为你收集整理的dubbo高可用的全部内容,希望文章能够帮你解决dubbo高可用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部