JAVA ssm b2b2c多用户商城系统源码-hystrix工作原理

简介: Hystrix是Netflix开源的一个限流熔断的项目、主要有以下功能:隔离(线程池隔离和信号量隔离):限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。优雅的降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。

Hystrix是Netflix开源的一个限流熔断的项目、主要有以下功能:
隔离(线程池隔离和信号量隔离):限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。
优雅的降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。
融断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。
缓存:提供了请求缓存、请求合并实现。支持实时监控、报警、控制(修改配置)
下面是他的工作流程:
hystrix
Hystrix主要有4种调用方式:

toObservable() 方法 :未做订阅,只是返回一个Observable 。
observe() 方法 :调用 #toObservable() 方法,并向 Observable 注册 rx.subjects.ReplaySubject 发起订阅。
queue() 方法 :调用 #toObservable() 方法的基础上,调用:Observable#toBlocking() 和 BlockingObservable#toFuture() 返回 Future 对象
execute() 方法 :调用 #queue() 方法的基础上,调用 Future#get() 方法,同步返回 #run() 的执行结果。

主要的执行逻辑:

1.每次调用创建一个新的HystrixCommand,把依赖调用封装在run()方法中.

2.执行execute()/queue做同步或异步调用.

3.判断熔断器(circuit-breaker)是否打开,如果打开跳到步骤8,进行降级策略,如果关闭进入步骤.

4.判断线程池/队列/信号量是否跑满,如果跑满进入降级步骤8,否则继续后续步骤.

5.调用HystrixCommand的run方法.运行依赖逻辑

依赖逻辑调用超时,进入步骤8.

6.判断逻辑是否调用成功。返回成功调用结果;调用出错,进入步骤8.

7.计算熔断器状态,所有的运行状态(成功, 失败, 拒绝,超时)上报给熔断器,用于统计从而判断熔断器状态.

8.getFallback()降级逻辑。以下四种情况将触发getFallback调用:

run()方法抛出非HystrixBadRequestException异常。
run()方法调用超时
熔断器开启拦截调用
线程池/队列/信号量是否跑满
没有实现getFallback的Command将直接抛出异常,fallback降级逻辑调用成功直接返回,降级逻辑调用失败抛出异常.

9.返回执行成功结果

目录
相关文章
|
1月前
|
存储 Java 关系型数据库
基于java的母婴商城系统设计与实现
基于java的母婴商城系统设计与实现
36 1
|
2月前
|
前端开发 Java 数据库连接
SSM框架笔记源码剖析
SSM,是Spring+Spring MVC+MyBatis的缩写,是继SSH之后,目前比较主流的JavaEE企业级框架,适用于搭建各种大型的企业级应用系统。Spring依赖注人DI来管理各层的组件,使用AOP (面向切面编程)管理事务、日志、权限等。Spring MVC代表Model(模型)、View(视图).Contoller(控制)接收外部请求并进行分发和处理。MyBatis是基于JDBC的框架,主要用来操作数据库,并且将业务实体和数据表联系起来。
23 0
|
3月前
|
小程序 测试技术
基于微信小程序+SSM+Vue+Node实现智慧旅游商城系统(三)
基于微信小程序+SSM+Vue+Node实现智慧旅游商城系统
|
10天前
|
JavaScript Java 测试技术
基于Java的运动器械购物商城的设计与实现(源码+lw+部署文档+讲解等)
基于Java的运动器械购物商城的设计与实现(源码+lw+部署文档+讲解等)
18 0
|
14天前
|
JavaScript Java 测试技术
基于Java的网上购物商城的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上购物商城的设计与实现(源码+lw+部署文档+讲解等)
45 1
|
15天前
|
JavaScript Java 测试技术
基于Java的商城系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的商城系统的设计与实现(源码+lw+部署文档+讲解等)
20 0
|
1月前
|
Java 数据库连接 数据库
JAVA Web项目开发SSM框架搭建(第一天)
JAVA Web项目开发SSM框架搭建(第一天)
|
1月前
|
存储 安全 前端开发
ssm656基于JAVA的校园失物招领平台的设计与实现
ssm656基于JAVA的校园失物招领平台的设计与实现
|
3月前
|
JavaScript 小程序 Java
基于Java的大学生平时成绩量化管理系统设计与实现(亮点:点赞评论、上传下载视频资源、多用户论坛交流)
基于Java的大学生平时成绩量化管理系统设计与实现(亮点:点赞评论、上传下载视频资源、多用户论坛交流)
50 0
|
3月前
|
人工智能 前端开发 JavaScript
计算机Java项目|基于SSM的课程智能组卷系统(二)
计算机Java项目|基于SSM的课程智能组卷系统
计算机Java项目|基于SSM的课程智能组卷系统(二)