熔断器hystrix

在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。

Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。

Hystrix 通过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用中进行蔓延;同时Hystrix 还提供故障时的 fallback 降级机制。

总而言之,Hystrix 通过这些方法帮助我们提升分布式系统的可用性和稳定性。

feign开启熔断功能

feign可以用okhttp代替传统的httpclient,性能更好

feign:
hystrix:
enabled: true
httpclient:
enabled: false
okhttp:
enabled: true

ribbon这块也可以对okhttp进行配置

ribbon.httpclient.enabled=false
ribbon.okhttp.enabled=true

hystrix熔断器可以对请求进行重试,对超时时间进行配置等。

hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
#目前有两个容器实例,单个请求超时5s,+重试>10s,超15s则熔断
timeoutInMilliseconds: 15000 ribbon:
#ribbon请求连接的超时时间- 限制3秒内必须请求到服务,并不限制服务处理的返回时间
connectTimeout: 3000
#请求处理的超时时间 下级服务响应最大时间,超出时间消费方(路由也是消费方)返回timeout,超时时间不可大于断路器的超时时间
readTimeout: 5000

feign添加fallback实现默认行为

feign上使用fallback之前,当服务端出现问题时,可以快速响应,并且不会抛出异常,就象为feign加了一层try...cache一样。

使用方式

开始feign.hystrix的功能

feign:
hystrix:
enabled: true
httpclient:
enabled: false
okhttp:
enabled: true

当feign的服务端出现问题时,返回值为fallback的值,你可以自己定,例如:

@Component
@Slf4j
public class UserClientFallback implements UserClient {
@Override
public Map getUser(Long id) {
logger.info("getUser.error");
return null;
} @Override
public Map getUsers() {
logger.info("getUsers.error.retrun.default");
return ImmutableMap.of("name", "lind", "sex", "male");
}
}

调用userclient失败之后,将返回默认的对象

 @GetMapping("/api/v1/test")
public ResponseEntity<?> userGet() {
Map users= userClient.getUsers();
return ResponseUtils.okMessage("success");
}

结果将是默认值

{"status":200,"message":"操作成功","data":{"name":"lind","sex":"male"},"totalRecords":0}

feign使用hystrix熔断的配置的更多相关文章

  1. hystrix熔断器之配置

    HystrixCommandProperties命令执行相关配置: hystrix.command.[commandkey].execution.isolation.strategy 隔离策略THRE ...

  2. spring cloud 2.x版本 Feign服务发现教程(内含集成Hystrix熔断机制)

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server和eureka-client的实现. 参考 ...

  3. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)

    1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢? 当现在服务的 ...

  4. hystrix ,feign,ribbon的超时时间配置,以及原理分析

    背景,网上看到很多关于hystrix的配置都是没生效的,如: 一.先看测试环境搭建: order 服务通过feign 的方式调用了product 服务的getProductInfo 接口 //---- ...

  5. 服务容错保护断路器Hystrix之五:配置

    接着<服务容错保护断路器Hystrix之二:Hystrix工作流程解析>中的<2.8.关于配置>再列举重要的配置如下 一.hystrix在生产中的建议 1.保持timeout的 ...

  6. spring cloud 2.x版本 Ribbon服务发现教程(内含集成Hystrix熔断机制)

    本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 前言 本文基于前两篇文章eureka-server和eureka-client的实现. 参考 ...

  7. Feign Ribbon Hystrix 三者关系 | 史上最全, 深度解析

    史上最全: Feign Ribbon Hystrix 三者关系 | 深度解析 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -25[ 博客园 总入口 ] 前言 疯狂创客圈(笔者尼恩创建的 ...

  8. SpringCloud(五)之Spring Cloud 中 Feign结合Hystrix断路器开发实战

    1.先讲hystrx(断路器) 在springcloub 中的使用 1.1  加入依赖 注意:网上新旧版本问题,所以要以官网为主,不然部分注解会丢失最新版本 2.0 <dependency> ...

  9. Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)

    目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashboar ...

随机推荐

  1. PyTorch官方教程中文版

    首先呈上链接:http://pytorch123.com/ PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序.它主要由Facebookd的人工智能小组开发,不 ...

  2. .NET Core简单使用RabbitMq

    RabbitMQ简介 RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整的可复用的企业级消息队,RabbitMQ可以实现点对点, ...

  3. 基于SCN增量恢复DG同步

    问题描述:做scn恢复备库的测试,吭哧了几天,今天终于可以记录一下,遇到了很多坑,作为初学者可以更好地理解DG,主要先关闭备库,在主库做归档丢失备库无法同步,备库产生GAP,然后增量备份恢复备库,版本 ...

  4. Idea 2016 激活码

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  5. python 拷贝文件夹下的文件 到 另一个文件夹

    import os,shutil def copy_search_file(srcDir, desDir): ls = os.listdir(srcDir) for line in ls: fileP ...

  6. 在phpstudy集成环境下的nginx服务器下配置url重写

    直接在对应的vhosts.conf配置文件的location / {}中添加以下内容: location / { index index.html index.htm index.php; #auto ...

  7. RabbitMQ的三大交换器

    pom文件都是相同的 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  8. Redis的优缺点小结

    Redis(Remote Dictionary Server 远程数据服务),一个 Key-value(键值对)存储系统,典型的 NoSQL 数据库服务器. 优点: 1.支持丰富的数据类型,如:Str ...

  9. 开启html元素的编辑模式contenteditable="true"

    开启html元素的编辑模式contenteditable="true"

  10. 使用Pycharm轻轻松松脱下git版本控制高大上的外衣

    一.思考❓❔ 1.git操作难吗? git操作命令繁杂 需求复杂场景, 使用不易 原理深邃,对初学者来说是有难度的 2.那么难,还要学吗? 作为IT行业从业者(搬砖小工),不会Git?滚,出去~~~ ...