hystrix 页面_SpringCloud微服务架构篇5:微服务熔断机制-Hystrix
由于网络原因或者自身的原因,微服务并不能保证服务百分之百可用。如果单个服务出现问题,则调用该服务时会出现延迟甚至调用失败的情况;若调用失败,用户则会重新刷新页面并尝试再次调用,再加上其他服务的调用,从而增加了服务器的负载,导致某个服务瘫痪,甚至整个服务崩溃。
什么是微服务容错保护
Hystrix库可以解决以下问题:
- 对第三方接口/依赖服务潜在的调用失败提供保护和控制机制。
- 在分布式系统中隔离资源,减低耦合,防止服务之间相互调用而导致级连失败。
- 快速失败及迅速恢复。
- 在合适的时机对服务进行优雅降级处理。
- 对服务提供近乎实时的监控、报警和控制操作。
Hystrix是根据”断路器“模式创建的。”断路器“本身是一个开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个符合预期的服务降级处理,而不是长时间地等待或抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间不必要地占用,从而避免了故障在分布式系统中蔓延乃至崩溃。
在请求失败频率较低的情况下,Hystrix还会直接把故障返回给客户端。只有当失败次数达到阈值(默认在20s内失败5次)时,断路器才会被打开并且不再进行后续通信,从而直接进行服务降级(ballback)处理。
Hystrix的开发和实现遵守设计理念:
- 防止由于单个服务的故障,而耗尽整个系统容器(Tomcat,Jetty)的线程资源
- 快速失败,而不是在队列中挤压服务请求
- 提供服务降级(ballback)处理机制
- 使用隔离技术(如舱壁隔离、泳道和断路器模式)来隔离服务依赖之间的影响
- 通过实时的监控和告警,及时发现系统中的潜在问题
- 通过配置更改可以优化低延迟传播的恢复时间,并且Hystrix支持大多数属性的动态更改,从而允许开发者可以实时对低延迟反馈循序进行修改和优化
- 提供对整个所依赖客户端在执行过程中的故障保护与隔离,而不仅仅是网络流量
快速启动Hystrix
继续对之前的项目对修改
1、引入Hystrix
引入spring-cloud-starter-netflix-hystrix依赖包。
2、开启Hystrix支持
在引导类中,增加@EnableCirCuitBreaker注解,开启对服务的荣作保护。
3、修改UserController实现
使用@HystrixCommand注解,该注解告诉服务调用者在调用失败时可以通过fallbackMethod参数指定的方法来实现服务降级处理。
4、容错测试
当两个微服务正常注册时,请求返回正常
现在把USER-SERVICE服务下掉,继续调用,返回的结果getUserNameFallback的内容。
5、服务降级的两种实现方式
1.使用注解完成服务降级实现
使用注解可以最小程度地侵入代码,可以快速让原来的功能支持服务降级。使用时仅需在要需要服务降级处理的方法上增加@HystrixCommand注解即可,并通过fallbackMethod属性设置该方法在降级处理时所使用的方法,然后在降级方法中实现服务降级处理逻辑。
@HystrixCommand注解属性说明:
- groupKey:设定HystrixCommand分组的名称。
- commandKey:设定HystrixCommand的名称。
- threadPoolKey:设定HystrixCommand执行线程池的名称。
- fallbackMethod:设定HystrixCommand服务降级所使用的方法名称,注意该方法需要与主方法定义在同一个类中,并且方法签名也要一致。
- commandProperties:设定HystrixComand属性,比如,断路器失败百分比、断路器时间窗口大小等。
- threadPoilProperties:设定HystrixCommand所执行线程池的属性,比如,线程池的大小,线程池等待队列长度等。
- ingoreExceptions:设定HystrixCommand执行服务降级处理时需要忽略的异常,当这些异常出现时不会执行服务降级处理。
- observableExecutionMode:设置HystrixCommand执行的方式。
- defaultFallback:设置HystrixCommand默认的服务降级处理方法,如同时设定了fallbackMethod,会优先使用fallbackMethod。
2.继承HystrixCommand完成服务降级实现
继承HystrixCommand的降级代码示例
继承HystrixObservableCommand的降级代码实例
6、在Feign中使用Hystrix回退
@FeignClient增加fallback属性
创建UserServiceFallback继承UserService
增加yml文件配置,开启feign中的hystrix功能
hystrix 页面_SpringCloud微服务架构篇5:微服务熔断机制-Hystrix相关推荐
- Spring Cloud构建微服务架构(五)服务网关
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...
- SpringCloud微服务架构实战:微服务治理
微服务治理 Spring Cloud 工具套件为微服务治理提供了全面的技术支持.这些治理工具主要包括服务的注册与发现.负载均衡管理.动态路由.服务降级和故障转移.链路跟踪.服务监控等.微服务治理的主要 ...
- Spring Cloud 云架构下的微服务架构:部门微服务(Dept)
作者 | springML 来源 | CSDN 博客 责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 封图| CSDN下载于视觉中国 对于 Rest 基础架构实现处理是 S ...
- 1.微服务架构-什么是微服务
什么是微服务 我们先来看看为什么要考虑使用微服务. 构建单体应用 我们假设,您开始开发一个打车应用,打算与 Uber 和 Hailo 竞争.经过初步交流和需求收集,您开始手动或者使用类似 Rails. ...
- 微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解
微服务架构 与 Dubbo 微服务框架.SpringCloud 微服务框架 详解 什么是微服务架构? 微服务架构就是将单体的应用程序分成多个应用程序,这一个应用程序就组成一个服务,这多个应用程序就组成 ...
- 【五】分布式微服务架构体系详解——服务发现和服务通信
前言 微服务架构的概念比容器技术早,但是却随着容器技术在13年的兴起,基于容器技术的微服务架构越来越被广泛应用.容器的轻量级部署方式很适合为每个微服务提供基础运行环境. 本文会基于Docker容器,先 ...
- 熔断机制hystrix
熔断机制hystrix 一.问题产生 雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程 正常情况下的服务: 某一服务出现异常,拖垮整个服务链路,消耗整个线程队列,造 ...
- 熔断机制 Hystrix 的使用
熔断机制 Hystrix 配合远程调用 hystrix对应的中文名字是"豪猪",豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机 制. 这与hystrix本身的功能不谋 ...
- 微应用是什么_SpringCloud微服务架构篇1:微服务架构开发
大型分布式系统具有复杂性.隐匿性.配合性和易变性四大难题,不会存在任何单一软件工程上的突破,能让开发生产力得到一个数量级上的提升. 1.单体架构应用的困境 一个典型的单体架构应用就是将一个应用中所有的 ...
最新文章
- 使用idea 时出现classnotfound
- 深入理解C/C++二维数组
- Qt Creator加载占位符数据
- OpenGL模型加载和渲染
- .NET 7 预览版 2 已发布,NativeAOT 正式可用
- Windows 环境下运用Python制作网络爬虫
- MySQL进阶(DDL与DML)
- 转载——逻辑回归的袅娜曲线,你是否会过目难忘?
- Windows 7 任务栏开发 之 进度条(Progress Bar)
- A8下超级终端调试问题
- 基于Spring Security的认证方式_SpringBoot认识_Spring Security OAuth2.0认证授权---springcloud工作笔记121
- jQuery.Deferred exception: e.indexOf
- java 1.6 32位_JDK1.6 32位官方下载
- linux proftpd 用户,[原]把boblog博客的用户导入proftpd用户认证数据库
- python实现t分布
- mysql with,mysql+with
- matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
- 国外广告联盟:玩转国外CPC网站作弊
- data在c语言中的作用,data是什么意思
- 树莓派屏幕显示No Signal
热门文章
- Python 核实文件是否存在的函数
- 转:jQuery常用插件
- 小公司如何选择合适的信息管理软件
- 验证guid()类型值的函数
- java毫秒 mysql秒_MySQL和Java时间毫秒之间的转换问题的总结
- mac mysql log在哪里_mac如何开启mysql bin-log
- python安装robotframework报错_Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
- 微课--Python网络爬虫采集百度搜索结果(例4-5)
- Python编程一定要注意的那些“坑”(七)
- 图论知识总结(简易)