【springcloud】功能尝试(二)熔断器的三个功能
一 概述
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】功能尝试(二)熔断器的三个功能相关推荐
- 集成开发环境PL/SQL Developer v13.0新功能(二)——PL / SQL美化功能增强
Allround Automations是一家位于荷兰的私人控股公司.该公司成立于1989年,在Oracle开发工具方面是全球领先的服务提供商.其中,产品PL/SQL Developer是一个集成开发 ...
- 活动直播做多会场切换功能(会场一、会场二、会场三自由切换)
活动直播做多会场切换功能(会场一.会场二.会场三自由切换) TONY原创,2020-10-29 活动直播做多会场切换功能截图 特点:支持PC端,也支持移动端观看,会场自由切换 我的视频应用类原创文章: ...
- SpringCloud(第 016 篇)电影微服务,定制Feign,一个Feign功能禁用Hystrix,另一个Feign功能启用Hystrix...
2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 016 篇)电影微服务,定制Feign,一个Feign功能禁用Hystrix,另一个Feign功能 ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- 面渣逆袭:Redis连环五十二问!三万字+八十图详解!
基础 1.说说什么是Redis? Redis图标 Redis是一种基于键值对(key-value)的NoSQL数据库. 比一般键值对数据库强大的地方,Redis中的value支持string(字符串) ...
- 金蝶K3产品环境行业篇常见问题集锦(一)-(二) -(三)
金蝶K3产品环境&行业篇常见问题集锦(一)-(二) -(三) 1.K/3 环境 1.1 如何确认数据服务部件是否安装 适用版本: K/3 V11.0.1 问题表现: 如何判断数据服务部件是否安 ...
- AutoCAD二次开发三种添加插件按钮的方法
在上一篇关于AutoCAD的文章中,我将很多关于CAD的博客相关资源进行了说明,这一篇文章我将介绍如何在AutoCAD中的ribbon中添加相应的按钮.就是下面这种按钮: PS:在开发中我们最好使用中 ...
- AutoCAD二次开发三种添加插件按钮的方法之二
上一篇相关文章主要借助了cuix配置文件来制作插件按钮,但是对于纯码农来说还是喜欢以代码来说话,今天这篇文章就来讲讲纯代码添加按钮. 开发IDE:VS2010 环境:.Net Framework4.0 ...
- Springcloud笔记(二)
Zookeeper 支付服务注册进zookeeper 注册中心Zookeeper zookeeper是一个分布式协调工具,可以实现注册中心功能 关闭Linux服务器防火墙后,启动zookeeper服务 ...
最新文章
- 超简略的samba配置
- Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享
- AIX系统maxuproc太小导致ORA-27300错
- 编译原理习题(含答案)
- 操作系统的线程和进程的区别_进程,线程,协程,有何区别?
- PAT (Basic Level) 1050 螺旋矩阵(模拟)
- 九齐NY8B072A单片机使用笔记(一)TIMER0定时器
- 为什么spring中的controller跳转出错_你的业务代码中Spring声明式事务处理正确了吗?
- Pytorch1.7.1与SimpleITK2.0.0在centos7上终端运行冲突的情况
- 【Hive】Hive分区表
- POJ3752 字母旋转游戏【水题】
- Android源码 目录
- 英特尔第十代处理器为什么不支持win7_Intel最新CPU和主板不能装Win7?解决办法来了...
- java word excel_java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档
- uni-app 使用 @touchmove.stop.prevent 导致弹框内容无法滚动
- WebGL场景的两种地面构造方法
- COM in Wine(1)——COM基本概念
- 基于Python的自动聊天机器人
- 给新手程序员的一点学习建议
- rfid android软件,RFID Tools
热门文章
- 基于 Milvus 的以图搜图系统 2.0
- 端口映射工具 porttunnel
- 0011基于单片机电子密码锁控制系统设计
- 与太阳神对话——j2se之旅
- 钓鱼网站php,偶遇钓鱼网站的一次代码审计
- 树状数组简单易懂的详解
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
- 2020湖南大学ACM新生杯题解- D Treasure Cave
- win10怎么找工作组计算机,win10无法查看工作组的解决方法|win10系统怎么找工作组...
- 分形、大自然的分形几何、数据可视化、Python绘图