Dubbo(3)Dubbo常用高级配置2:负载均衡、集群容错、服务降级

负载均衡

需要有集群的环境

  • 服务提供者被部署到多个机器上:1、2、3号机器上

  • 这时候,服务的消费者A去调用1、2、3三个服务

  • 如果A来了一个请求,这个请求到底是访问1还是2还是3,这时候就需要一个负载均衡的策略来影响这个事情

  • 如图所示:

    image-20211023162339220

Dubbo的负载均衡的策略:

  1. Random:按权重随机,默认值。按权重设置随机概率。

    即按照三个机器的权重随机访问,下者的访问比例为:1:2:1

    image-20211023162611490

  2. RoundRobin:按权重轮询

    按上图的访问的话,访问顺序应该是:1—>2---->3----->2…

  3. LeastActive:最少活跃调用数,相同活跃数的随机。

    每一次访问都会去询问所有的服务提供者,然后选择最快的进行调用,每一次访问都会调用,如果活跃度相同的话,就随机调用

  4. ConsistentHash:-致性 Hash,相同参数的请求总发到同一提供者。

    如果只要第一次访问的是某一个服务提供者,那么只要与第一次访问的服务消费者内容一样的访问,永远都会去访问第一次访问的能够服务提供者

    这个是通过hash算法去计算出机器的编号

    image-20211023164018276

Random演示

image-20211023162611490

安装上面的截图实现的步骤为:

(1)设置权重:

image-20211023162917263

(2)当上面的服务启动后,再次修改weight、端口号,然后再次启动该机器,就能够实现多个服务了

image-20211023163055126

image-20211023163229329

(3)上面的步骤设置三次,就部署了三个服务,搭建了集群

(4)设置负载均衡的方式为Random

image-20211023163521782

集群容错

出现情况:

  • 服务提供者部署了一个集群,分别部署在B、C、D三台机器上
  • 服务的消费者来调用服务的提供者,如果这次调用出错了(如果A调用B机器出错了),出错了怎么处理,就是容错机制

集群容错的模式:

image-20211023164752502

  1. Failover Cluster:失败重试。默认值。当出现失败,重试其它服务器,默认重试2次,使用retries配置。一般用于读操作(比如数据库的,可能会出现执行三次执行sql的情况,所以这种一般用于读的操作)

    比如说,A调用B出错了,就会去重试C和D,因为C、D是B的集群,直到C和D都失败了,才真正的会抛出异常

  2. Failfast Cluster :快速失败,只发起一次调用,失败立即报错,通常用于写操作

  3. Failsafe Cluster:失败安全,出现异常时,直接忽略。返回一个空结果。

  4. Failback Cluster:失败自动恢复,后台记录失败请求,定时重发。

    必须要调用成功,一次失败过后,过一段时间会再发一次请求,失败了又发一个请求,直到成功

    比较重要的操作使用这个

  5. Forking, Cluster :并行调用多个服务器,只要一个成功即返回。

    一次调用多个服务提供者:B、C、D,只要有一个成功就返回

    但是这样的操作比较耗性能

  6. Broadcast Cluster :广播调用所有提供者,逐个调用,任意一台报错则报错。

    调用所有的服务提供者,只要有一个失败就报错,成功是需要所有的成功才可以

    同步要求比较高的才使用这个

Failover Cluster演示

服务器的配置与Random的演示一样

设置负载均衡的方式为Failover Cluster

image-20211023165303062

服务降级

B机器里面部署了多个服务,消费者A调用B机器里面的三个服务

服务降级出现:因为B机器的性能到了利用到最大化,这时候就需要将不太重要的服务给管关掉,释放资源,保证核心的业务能够进行

image-20211023170415005

服务降级方式:

  1. mock= force:return null

    表示消费方对该服务的方法调用都直接返回null值,不发起远程调用。来屏蔽不重要服务不可用时对调用方的影响。

    image-20211023170921314

  2. mock=fail:return null

    表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。

    image-20211023170959185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值