容错机制java_Java编程解密-Dubbo负载均衡与集群容错机制

1 Dubbo简介

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三年夜核心能力:面向接口的远程体例挪用,智能容错和负载均衡,以及办事自动注册和发现。

作为一个轻量级RPC框架,Dubbo的设计架构简洁清晰,主要组件包含Provider(办事提供者),Consumer(办事消费者),Registry(注册中心)三部分组成。另外还有用于办事监控的Monitor,它们之间的关系如下所示:

Java编程解密-Dubbo负载均衡与集群容错机制-1.jpg (25.32 KB, 下载次数: 0)

2018-8-11 17:31 上传

在一个散布式系统中,为了做到系统的高可用,即办事宕机时不影响对外正常提供办事,需要组建负载集群,当集群中某一节点没有及时返回数据时,需要有集群容错(重试)机制。

2 Dubbo负载均衡

在集群负载均衡时,Dubbo 提供了以下5种均衡策略,缺省为 random 随机挪用。

Random

随机挪用

Random LoadBalance

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

在一个截面上碰撞的几率高,但挪用量越年夜散布越均匀,并且按几率使用权重后也比较均匀,有利于动态调剂提供者权重。

RoundRobin LoadBalance

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

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

LeastActive LoadBalance

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

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

ConsistentHash LoadBalance

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

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

3 负载均衡配置

办事端办事级别

;

客户端办事级别

办事端体例级别

客户端体例级别

4 Dubbo集群容错(重试机制)

在集群挪用失败时,Dubbo 提供了多种容错方案,缺省为 Failover 重试。

Java编程解密-Dubbo负载均衡与集群容错机制-2.jpg (32.19 KB, 下载次数: 0)

2018-8-11 17:31 上传

各节点关系:

这里的 Invoker 是 Provider 的一个可挪用 Service 的抽象,Invoker 封装了 Provider 地址及 Service 接口信息

Directory 代表多个 Invoker,可以把它看成 List ,但与 List 不合的是,它的值可能是动态转变的,好比注册中心推送变动

Cluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,挪用失败后,重试另一个

Router 负责从多个 Invoker 中按路由规则选出子集,好比读写分手,应用隔离等

LoadBalance 负责从多个 Invoker 中选出具体的一个用于本次挪用,选的过程包含了负载均衡算法,挪用失败后,需要重选

5 重试模式及其特点

Failover Cluster(默认)

失败自动切换,当呈现失败,重试其它办事器 [1]。通经常使用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。

重试次数配置如下:

Failfast Cluster

快速失败,只倡议一次挪用,失败立即报错。通经常使用于非幂等性的写操作,好比新增记录。

Failsafe Cluster

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

Failback Cluster

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

Forking Cluster

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

Broadcast Cluster

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

6 集群模式配置

依照以下示例在办事提供方和消费方配置集群模式

欢迎关注,欢迎留言探讨。

更多内容回复查看:

游客,如果您要查看本帖隐藏内容请回复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值