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实现相关推荐

  1. Dubbo 源码分析 - 集群容错之 Cluster

    1.简介 为了避免单点故障,现在的应用至少会部署在两台服务器上.对于一些负载比较高的服务,会部署更多台服务器.这样,同一环境下的服务提供者数量会大于1.对于服务消费者来说,同一环境下出现了多个服务提供 ...

  2. Dubbo的负载均衡、集群容错、服务降级等机制详解

    文章目录 1. Dubbo与RPC的关系 2. Dubbo的基本使用 2.1 Dubbo是什么? 2.2 负载均衡 2.3 服务超时 2.4 集群容错 2.5 服务降级 2.6 本地存根 2.7 参数 ...

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

    1 Dubbo简介 Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 作为一个轻量级RPC框架,Du ...

  4. Apache Dubbo集群容错

    在分布式应用中(微服务),通常会对服务进行集群部署来保障服务高可用.dubbo用于服务远程调用,远程服务是有可能出现异常情况的,如网络抖动,服务短暂不可用等情况,需要自动容错,服务降级或者mock测试 ...

  5. 算法高级(20)-集群容错算法

    一.集群容错场景 集群服务调用失败后,服务框架需要能够在底层自动容错,容错策略很多,分别适用于不同场景. 在分布式服务框架中,业务消费者不需要了解服务提供者的具体位置,它发起的调用请求也不包含服务提供 ...

  6. dubbo调用失败策略_面试官:dubbo负载均衡策略,集群容错策略,动态代理策略有哪些...

    面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理. 说白了,就 ...

  7. dubbo负载均衡策略和集群容错策略

    dubbo负载均衡策略 random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权 ...

  8. Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些?

    Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些? 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须 ...

  9. Dubbo(十四) dubbo的服务降级与集群容错

    一.dubbo的服务降级 dubbo的服务降级包含两种常见,屏蔽服务和服务容错.在dubbo-admin服务信息消费者界面可以看到有屏蔽和容错功能. 屏蔽功能是将该服务直接进行屏蔽,消费者将不再调用服 ...

最新文章

  1. IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决
  2. 汽车之家全系车型(包含历史停售车型)图片--参数分析
  3. break 与continue 语句
  4. python 开放_Python
  5. 手机的小窗口怎么弄_荣耀9X如何设置桌面小工具?划重点,这个要考
  6. 灰色关联法 —— python
  7. Python——杂记
  8. 18-elasticsearch集群健康为黄色
  9. [USACO08JAN]牛大赛Cow Contest
  10. Vista下调整硬盘分区大小的方法
  11. 搜索引擎:获取并处理mdx英汉词典文件为数据库
  12. wps文字表格制作拼音田字格模板_wps表格里怎么制作拼音田字格
  13. 小程序项目:基于微信小程序的校园互助平台——计算机毕业设计
  14. 从韩国的大数据之殇,看技术的产业价值与功能价值
  15. Android十大最新技术,Android十大常用技术揭秘-挑战-挑战
  16. php转义和反转,PHP转义,反转义
  17. ps4欧洲服务器注册,ps4pro注册港服教程
  18. greenplum-cc-web4.0监控安装
  19. 电脑里的文档不小心删除了恢复的方法
  20. google play连接超时_Google框架一键安装

热门文章

  1. python入门经典例题-Python入门_列表练习题
  2. python爬虫实例-python3.7简单的爬虫实例详解
  3. Linux命令行文档查看cat、less、more、head、tail和图片查看
  4. UVa10639 Square Puzzle(WA)
  5. hdu2037 今年暑假不AC
  6. 您的连接不是私密连接
  7. JavaEE基础(八)
  8. python基本语法积累~
  9. linux 内核发布时间,求问Linux最新内核版本以及发布日期。
  10. java实现qq_java实现的类似qq聊天系统