Dubbo之旅--集群容错和负载均衡
当我们的系统中用到Dubbo的集群环境,由于各种原因在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重试。
Dubbo的集群容错在这里想说说他是由于我们实际的项目中出现了此类的问题,由于依赖的第三方项目出现异常,导致dubbo调用超时,此时使用的是默认的集群容错方式,而配置的reties='3',这样前段系统连续掉用了三次服务,结果可想而知.
先说一下各节点关系:
这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地址及Service接口信息。
Directory代表多个Invoker,能够把它看成List<Invoker>,但与List不同的是,它的值可能是动态变化的。比方注冊中心推送变更。
Cluster将Directory中的多个Invoker伪装成一个Invoker,对上层透明,伪装过程包括了容错逻辑,调用失败后。重试还有一个。
Router负责从多个Invoker中按路由规则选出子集,比方读写分离,应用隔离等。
LoadBalance负责从多个Invoker中选出详细的一个用于本次调用。选的过程包括了负载均衡算法,调用失败后,须要重选。
集群容错模式:
Failover Cluster
失败自己主动切换,当出现失败。重试其他server。(缺省)
通经常使用于读操作,但重试会带来更长延迟。
可通过retries="2"来设置重试次数(不含第一次)。正是文章刚開始说的那种情况.
Failfast Cluster
高速失败,仅仅发起一次调用。失败马上报错。
通经常使用于非幂等性的写操作,比方新增记录。
Failsafe Cluster
失败安全,出现异常时,直接忽略。
通经常使用于写入审计日志等操作。
Failback Cluster
失败自己主动恢复,后台记录失败请求,定时重发。
通经常使用于消息通知操作。
Forking Cluster
并行调用多个server,仅仅要一个成功即返回。
通经常使用于实时性要求较高的读操作。但须要浪费很多其它服务资源。
可通过forks="2"来设置最大并行数。
Broadcast Cluster
广播调用全部提供者,逐个调用,随意一台报错则报错。(2.1.0開始支持)
通经常使用于通知全部提供者更新缓存或日志等本地资源信息。
重试次数配置如:(failover集群模式生效)
<dubbo:serviceretries="2"/>
或:
<dubbo:referenceretries="2"/>
或:
<dubbo:reference>
<dubbo:methodname="findFoo"retries="2"/>
</dubbo:reference>
集群模式配置如:
<dubbo:servicecluster="failsafe"/>
或:
<dubbo:referencecluster="failsafe"/>
以上是Dubbo集群的容错方式,接下来是在集群负载均衡时,Dubbo提供了多种均衡策略。缺省为random随机调用。
Random LoadBalance
随机,按权重设置随机概率。
在一个截面上碰撞的概率高。但调用量越大分布越均匀,并且按概率使用权重后也比較均匀。有利于动态调整提供者权重。
RoundRobin LoadBalance
轮循。按公约后的权重设置轮循比率。
存在慢的提供者累积请求问题,比方:第二台机器非常慢,但没挂,当请求调到第二台时就卡在那。久而久之。全部请求都卡在调到第二台上。
LeastActive LoadBalance
最少活跃调用数。同样活跃数的随机。活跃数指调用前后计数差。
使慢的提供者收到更少请求,由于越慢的提供者的调用前后计数差会越大。
ConsistentHash LoadBalance
一致性Hash,同样參数的请求总是发到同一提供者。
当某一台提供者挂时。原本发往该提供者的请求,基于虚拟节点,平摊到其他提供者,不会引起剧烈变动。
Dubbo的集群容错和负载均衡相同也是Dubbo本身的高级特性.正如我们在说自己定义扩展的时候一样,这两个特征相同也能够进行自己定义扩展,用户能够依据自己实际的需求来扩展他们从而满足项目的实际需求.
Dubbo之旅--集群容错和负载均衡的更多相关文章
- Dubbo工作原理,集群容错,负载均衡
Remoting:网络通信框架,实现了sync-over-async和request-response消息机制. RPC:一个远程过程调用的抽象,支持负载均衡.容灾和集群功能. Registry:服务 ...
- 4.Dubbo2.5.3集群容错和负载均衡
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.集群容错和负载均衡原理 各节点关系: 这里的Invoker是Provider的一个可调用Service的抽 ...
- Dubbo学习笔记7:Dubbo的集群容错与负载均衡策略
Dubbo的集群容错策略 正常情况下,当我们进行系统设计时候,不仅要考虑正常逻辑下代码该如何走,还要考虑异常情况下代码逻辑应该怎么走.当服务消费方调用服务提供方的服务出现错误时候,Dubbo提供了多种 ...
- Dubbo学习(二) Dubbo 集群容错模式-负载均衡模式
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- Dubbo的集群容错与负载均衡策略及自定义(一致性哈希路由的缺点及自定义)
Dubbo的集群容错策略 正常情况下,当我们进行系统设计时候,不仅要考虑正常逻辑下代码该如何走,还要考虑异常情况下代码逻辑应该怎么走.当服务消费方调用服务提供方的服务出现错误时候,Dubbo提供了多种 ...
- Dubbo的集群容错与负载均衡策略
Dubbo的集群容错策略 正常情况下,当我们进行系统设计时候,不仅要考虑正常逻辑下代码该如何走,还要考虑异常情况下代码逻辑应该怎么走.当服务消费方调用服务提供方的服务出现错误时候,Dubbo提供了多种 ...
- Openfire 集群部署和负载均衡方案
Openfire 集群部署和负载均衡方案 一. 概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...
- Tomcat6+nginx集群,达到负载均衡和session复制
nginx+tomcat做web项目集群,达到负载均衡.故障转移.session复制功能. 1.nginx配置文件见上一篇“nginx配置文件(反向代理+集群+动静分离)” 2.tomcat集群,修改 ...
- Apache反向代理结合Tomcat集群来实现负载均衡(一)、概念理解
好的博文一般都能做到"望题知文",看下标题就知道下边要讲的内容,写这个标题时犹豫了一下,本来要将标题定位apache+tomcat实现负载均衡,但是又认为这样显得比較模糊.后来想了 ...
随机推荐
- 2017/11/21 Leetcode 日记
2017/11/21 Leetcode 日记 496. Next Greater Element I You are given two arrays (without duplicates) num ...
- Bakery CodeForces - 707B (最短路的思路题)
Masha wants to open her own bakery and bake muffins in one of the n cities numbered from 1 to n. The ...
- Opencv学习笔记1:安装opencv和VS2015并进行环境配置
用了Opencv一段时间了,简单记录一下opencv在vs2015下的配置. 第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: https://opencv.org/releases ...
- 【51Nod 1363】最小公倍数之和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1363 \[ \begin{aligned} &\sum_{i=1 ...
- 【BZOJ 4070】【APIO 2015】雅加达的摩天楼
http://www.lydsy.com/JudgeOnline/problem.php?id=4070 分块建图. 对每个\(P_i\)分类讨论,\(P_i>\sqrt N\)则直接连边,边数 ...
- 【20181026T1】**手枪【dfs】
题面 [错解] 百年难得一见之提高考搜索了 ...怎么搞啊 相当于是S进去有一个环? tarjan? 跑个联通块,可以穿过去的连一条边? 好主意-- dfs写完了-- 哎等下? 5 5 .##.. # ...
- python3-开发进阶Flask的基础
一.概述 最大的特点:短小精悍.可拓展强的一个Web框架.注意点:上下文管理机制,依赖wsgi:werkzurg 模块 二.前奏学习werkzurg 先来回顾一个知识点:一个类加括号会执行__init ...
- MySql - GROUP BY 和 HAVING关键字
本文主要针对GROUP BY 和 HAVING两个关键字进行分析 使用测试表如下: 测试前,只知道GROUP BY 这个关键字的作用是根据一个字段进行分组,去重.HAVING对分组设置条件. 具体分组 ...
- bzoj 3940: [Usaco2015 Feb]Censoring -- AC自动机
3940: [Usaco2015 Feb]Censoring Time Limit: 10 Sec Memory Limit: 128 MB Description Farmer John has ...
- POJ 2774 Long Long Message 后缀数组模板题
题意 给定字符串A.B,求其最长公共子串 后缀数组模板题,求出height数组,判断sa[i]与sa[i-1]是否分属字符串A.B,统计答案即可. #include <cstdio> #i ...