一 概述

sc的熔断器hystrix主要有三个功能:

1 熔断降级

2 会话级缓存

3 线程隔离

二 熔断降级

搭建注册中心,相同名字和接口的生产者AB,消费者,其中生产者A的接口sleep若干秒营造阻断效果,B的接口正常返回,消费者循环100次feign调用此接口。

只有A注册时,100次都在超时后进入fallback熔断备用方法;

AB都注册时,100次都调用B的接口;

启动A,关闭B,访问消费者,逐个在超时后进入备用方法;中途启动B,一段时间后A更新到B的注册信息,之后会全部调用B的接口;

将A的接口恢复正常,100次会轮询AB。

可见当生产者调用异常时,熔断器会选择其他正常的服务;当全部木大时,进入熔断备用方法;当接口恢复畅通,调用也会恢复。

三 缓存

熔断器提供会话级缓存,类似数据库一级缓存。

在方法中初始化熔断器上下文(不写会报错),然后在熔断注解的方法上增加注解以缓存此方法的结果,缓存仅在本次会话有效。

HystrixRequestContext.initializeContext();
...@HystrixCommand(fallbackMethod = "fallback3",commandKey = "c1")@CacheResultpublic String xx(@CacheKey String xx){
...

cacheResult搭配hystrixCommand使用,标记此方法的返回值要缓存,commandKey为缓存键;

入参标记cacheKey的参数,在之后值仍相同,则直接返回缓存,不进入方法体;若没有cacheKey,则检查所有入参;

调用@CacheRemove(commandKey = "commandKey3") @HystrixCommand标记的方法,清除本次会话中指定commandKey的缓存。

三 隔离

我的理解,此微服务对某个api的并发访问过大,此api提供者又出现异常时,可能导致所有请求阻塞,虽然超时可以进入熔断备用方法,但期间仍会堆积越来越多的请求占用资源。隔离便是设置一个请求数量(线程隔离为线程数+等待数,信号量隔离为指定的信号量),这个数量内的请求正常调用api,数量外的直接进入备用方法,以保证本机硬件资源稳定。(待确认)

四 其它

请求合并,感觉有点鸡肋,并发少了要等攒够了再调用,单个请求重复调接口可以再写个findAll,也就并发高的场景能用用,不过这种必定高并发的场景有多少呢

【springcloud】功能尝试(二)熔断器的三个功能相关推荐

  1. 集成开发环境PL/SQL Developer v13.0新功能(二)——PL / SQL美化功能增强

    Allround Automations是一家位于荷兰的私人控股公司.该公司成立于1989年,在Oracle开发工具方面是全球领先的服务提供商.其中,产品PL/SQL Developer是一个集成开发 ...

  2. 活动直播做多会场切换功能(会场一、会场二、会场三自由切换)

    活动直播做多会场切换功能(会场一.会场二.会场三自由切换) TONY原创,2020-10-29 活动直播做多会场切换功能截图 特点:支持PC端,也支持移动端观看,会场自由切换 我的视频应用类原创文章: ...

  3. SpringCloud(第 016 篇)电影微服务,定制Feign,一个Feign功能禁用Hystrix,另一个Feign功能启用Hystrix...

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 016 篇)电影微服务,定制Feign,一个Feign功能禁用Hystrix,另一个Feign功能 ...

  4. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  5. 面渣逆袭:Redis连环五十二问!三万字+八十图详解!

    基础 1.说说什么是Redis? Redis图标 Redis是一种基于键值对(key-value)的NoSQL数据库. 比一般键值对数据库强大的地方,Redis中的value支持string(字符串) ...

  6. 金蝶K3产品环境行业篇常见问题集锦(一)-(二) -(三)

    金蝶K3产品环境&行业篇常见问题集锦(一)-(二) -(三) 1.K/3 环境 1.1 如何确认数据服务部件是否安装 适用版本: K/3 V11.0.1 问题表现: 如何判断数据服务部件是否安 ...

  7. AutoCAD二次开发三种添加插件按钮的方法

    在上一篇关于AutoCAD的文章中,我将很多关于CAD的博客相关资源进行了说明,这一篇文章我将介绍如何在AutoCAD中的ribbon中添加相应的按钮.就是下面这种按钮: PS:在开发中我们最好使用中 ...

  8. AutoCAD二次开发三种添加插件按钮的方法之二

    上一篇相关文章主要借助了cuix配置文件来制作插件按钮,但是对于纯码农来说还是喜欢以代码来说话,今天这篇文章就来讲讲纯代码添加按钮. 开发IDE:VS2010 环境:.Net Framework4.0 ...

  9. Springcloud笔记(二)

    Zookeeper 支付服务注册进zookeeper 注册中心Zookeeper zookeeper是一个分布式协调工具,可以实现注册中心功能 关闭Linux服务器防火墙后,启动zookeeper服务 ...

最新文章

  1. 超简略的samba配置
  2. Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享
  3. AIX系统maxuproc太小导致ORA-27300错
  4. 编译原理习题(含答案)
  5. 操作系统的线程和进程的区别_进程,线程,协程,有何区别?
  6. PAT (Basic Level) 1050 螺旋矩阵(模拟)
  7. 九齐NY8B072A单片机使用笔记(一)TIMER0定时器
  8. 为什么spring中的controller跳转出错_你的业务代码中Spring声明式事务处理正确了吗?
  9. Pytorch1.7.1与SimpleITK2.0.0在centos7上终端运行冲突的情况
  10. 【Hive】Hive分区表
  11. POJ3752 字母旋转游戏【水题】
  12. Android源码 目录
  13. 英特尔第十代处理器为什么不支持win7_Intel最新CPU和主板不能装Win7?解决办法来了...
  14. java word excel_java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档
  15. uni-app 使用 @touchmove.stop.prevent 导致弹框内容无法滚动
  16. WebGL场景的两种地面构造方法
  17. COM in Wine(1)——COM基本概念
  18. 基于Python的自动聊天机器人
  19. 给新手程序员的一点学习建议
  20. rfid android软件,RFID Tools

热门文章

  1. 基于 Milvus 的以图搜图系统 2.0
  2. 端口映射工具 porttunnel
  3. 0011基于单片机电子密码锁控制系统设计
  4. 与太阳神对话——j2se之旅
  5. 钓鱼网站php,偶遇钓鱼网站的一次代码审计
  6. 树状数组简单易懂的详解
  7. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
  8. 2020湖南大学ACM新生杯题解- D Treasure Cave
  9. win10怎么找工作组计算机,win10无法查看工作组的解决方法|win10系统怎么找工作组...
  10. 分形、大自然的分形几何、数据可视化、Python绘图