sofa-rpc集群容错之Failfast实现
2019独角兽企业重金招聘Python工程师标准>>>
注意:我们分析的sofa-rpc版本是5.4.0。
图1 FailFastCluster的类继承图
1.Failfast的含义
Failfast可以理解为只发起一次调用,若失败则立即报错。
2.sofa-rpc中Failfast的实现
核心代码在FailFastCluster的doInvoke(SofaRequest request)中,源码如下。
@Override
public SofaResponse doInvoke(SofaRequest request) throws SofaRpcException {ProviderInfo providerInfo = select(request);try {SofaResponse response = filterChain(providerInfo, request);if (response != null) {return response;} else {throw new SofaRpcException(RpcErrorType.CLIENT_UNDECLARED_ERROR,"Failed to call " + request.getInterfaceName() + "." + request.getMethodName()+ " on remote server " + providerInfo + ", return null");}} catch (Exception e) {throw new SofaRpcException(RpcErrorType.CLIENT_UNDECLARED_ERROR,"Failed to call " + request.getInterfaceName() + "." + request.getMethodName()+ " on remote server: " + providerInfo + ", cause by: "+ e.getClass().getName() + ", message is: " + e.getMessage(), e);}
}
- 首先select(request)获取一个服务提供者。
- filterChain(providerInfo,request)的实现不关心,把它理解为一个黑盒,它的作用是调用服务提供者的服务。
- 如果结果为不为null且不抛出异常,则返回结果;如果抛出异常,则先catch,而后封装原始异常,之后再讲异常抛出。
重点在于请求异常之后,立即将异常抛出给调用者。
3.思考
你是否在其它框架中看到过Failfast的实现? Dubbo中有Failfast的实现,可以去看Dubbo中FailfastClusterInvoker.java的实现,我的博客中分析过。
转载于:https://my.oschina.net/u/2518341/blog/1815091
sofa-rpc集群容错之Failfast实现相关推荐
- Dubbo 源码分析 - 集群容错之 Cluster
1.简介 为了避免单点故障,现在的应用至少会部署在两台服务器上.对于一些负载比较高的服务,会部署更多台服务器.这样,同一环境下的服务提供者数量会大于1.对于服务消费者来说,同一环境下出现了多个服务提供 ...
- Dubbo的负载均衡、集群容错、服务降级等机制详解
文章目录 1. Dubbo与RPC的关系 2. Dubbo的基本使用 2.1 Dubbo是什么? 2.2 负载均衡 2.3 服务超时 2.4 集群容错 2.5 服务降级 2.6 本地存根 2.7 参数 ...
- Java编程解密-Dubbo负载均衡与集群容错机制
1 Dubbo简介 Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 作为一个轻量级RPC框架,Du ...
- Apache Dubbo集群容错
在分布式应用中(微服务),通常会对服务进行集群部署来保障服务高可用.dubbo用于服务远程调用,远程服务是有可能出现异常情况的,如网络抖动,服务短暂不可用等情况,需要自动容错,服务降级或者mock测试 ...
- 算法高级(20)-集群容错算法
一.集群容错场景 集群服务调用失败后,服务框架需要能够在底层自动容错,容错策略很多,分别适用于不同场景. 在分布式服务框架中,业务消费者不需要了解服务提供者的具体位置,它发起的调用请求也不包含服务提供 ...
- dubbo调用失败策略_面试官:dubbo负载均衡策略,集群容错策略,动态代理策略有哪些...
面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理. 说白了,就 ...
- dubbo负载均衡策略和集群容错策略
dubbo负载均衡策略 random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权 ...
- Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些?
Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些? 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须 ...
- Dubbo(十四) dubbo的服务降级与集群容错
一.dubbo的服务降级 dubbo的服务降级包含两种常见,屏蔽服务和服务容错.在dubbo-admin服务信息消费者界面可以看到有屏蔽和容错功能. 屏蔽功能是将该服务直接进行屏蔽,消费者将不再调用服 ...
最新文章
- IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决
- 汽车之家全系车型(包含历史停售车型)图片--参数分析
- break 与continue 语句
- python 开放_Python
- 手机的小窗口怎么弄_荣耀9X如何设置桌面小工具?划重点,这个要考
- 灰色关联法 —— python
- Python——杂记
- 18-elasticsearch集群健康为黄色
- [USACO08JAN]牛大赛Cow Contest
- Vista下调整硬盘分区大小的方法
- 搜索引擎:获取并处理mdx英汉词典文件为数据库
- wps文字表格制作拼音田字格模板_wps表格里怎么制作拼音田字格
- 小程序项目:基于微信小程序的校园互助平台——计算机毕业设计
- 从韩国的大数据之殇,看技术的产业价值与功能价值
- Android十大最新技术,Android十大常用技术揭秘-挑战-挑战
- php转义和反转,PHP转义,反转义
- ps4欧洲服务器注册,ps4pro注册港服教程
- greenplum-cc-web4.0监控安装
- 电脑里的文档不小心删除了恢复的方法
- google play连接超时_Google框架一键安装