CN108009075B - 基于Hystrix框架的动态熔断判断方法 - Google Patents
基于Hystrix框架的动态熔断判断方法 Download PDFInfo
- Publication number
- CN108009075B CN108009075B CN201711202905.7A CN201711202905A CN108009075B CN 108009075 B CN108009075 B CN 108009075B CN 201711202905 A CN201711202905 A CN 201711202905A CN 108009075 B CN108009075 B CN 108009075B
- Authority
- CN
- China
- Prior art keywords
- mortality
- hystrix
- dynamic
- request
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Peptides Or Proteins (AREA)
Abstract
本发明公开了一种基于Hystrix框架的动态熔断判断方法,通过压力测试得出当前服务业务的最大负载量maxF,通过测试得出不同压力下的业务失败率范围,改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据,改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。本发明主要对源码中的请求量统计进行重写,记录请求请求的相关统计数,同时对断路器实现部分重写断路状态判断调整算法,以实现动态熔断规则的处理。
Description
技术领域
本发明涉及一种动态熔断判断方法,特别是一种基于Hystrix框架的动态熔断判断方法。
背景技术
由于微服务架构中各个相关微服务需要进行数据交换,所以我们可以做一个假设:假设服务A依赖服务B和服务C,而B服务和C服务有可能继续依赖其他的服务,继续下去会使得调用链路过长,技术上称1->N扇出。如果在A的链路上某个或几个被调用的子服务不可用或延迟较高,则会导致调用A服务的请求被堵住,堵住的请求会消耗占用掉系统的线程、io等资源,当该类请求越来越多,占用的计算机资源越来越多的时候,会导致系统瓶颈出现,造成其他的请求同样不可用,最终导致业务系统崩溃,又称:雪崩效应。
为了解决微服务雪崩效应需要对服务依赖做隔离与熔断,Hystrix就是处理依赖隔离与熔断的开源框架,是目前较为主流的熔断实现方案。在此基础上我们的问题是部分同步数据业务的请求量波动非常大,在同步数据业务请求量达到峰值时会对其他业务造成较大的影响(如数据库IO等瓶颈导致),所以需要根据请求量进行动态失败控制,在请求量较高时10%的失败率就需要进行熔断(失败超时时间设置较短),以保障其他业务的正常使用,而在请求量较低时50%失败率才需要进行熔断。因此需要进行动态的熔断控制。但是Hystrix无法对服务进行动态的熔断控制,只能进行固定的失败率控制。
发明内容
本发明所要解决的技术问题是提供一种基于Hystrix框架的动态熔断判断方法,采用Hystrix框架根据服务请求量动态的调整服务熔断规则。
为解决上述技术问题,本发明所采用的技术方案是:
一种基于Hystrix框架的动态熔断判断方法,其特征在于包含以下步骤:
步骤一:通过压力测试得出当前服务业务的最大负载量maxF;
步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);
步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;
步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。
进一步地,所述步骤一具体为,通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。
进一步地,所述步骤二具体为,在最大负载量的压力下测试得出服务的请求失败率,统计出一段时间的最大与最小失败率值,在最后进行动态熔断测试时进行微调以更好的适应具体的环境。
进一步地,所述步骤二具体为,在最大负载量的压力下测试得出服务的请求失败率,通过服务平时的性能估算一段时间的最大与最小失败率值,在最后进行动态熔断测试时可以进行微调以更好的适应具体的环境。
进一步地,所述熔断失败率算法具体为,
每秒请求率qps=totalRequests*1000/duringTimeInMilliseconds;
负载量f=qps*1000/meanTimeInMilliseconds;
动态失败率p=minErrorPercentage+(maxErrorPercentage-minErrorPercentage)*(1–f/maxF);
其中totalRequests表示一次统计中获取到的请求运行总数;duringTimeInMilliseconds表示一次统计的总时长;meanTimeInMilliseconds表示请求的平均响应时间。
本发明与现有技术相比,具有以下优点和效果:本发明基于Hystrix框架实现的动态熔断规则方法,主要对源码中的请求量统计进行重写,记录请求请求的相关统计数,同时对断路器实现部分重写断路状态判断调整算法,以实现动态熔断规则的处理。在部分失败率高的场景下,通过动态熔断机制,前后服务的整体成功率得到了提升,未使用动态熔断机制,固定失败率时,整体失败率达到95%,其中3375个请求被熔断,使用动态熔断机制时,失败率随请求量增大动态调整,此图中请求量更大,但整体失败率只有61%,其中只有1308个请求被熔断,因此服务性能得到提升。
具体实施方式
下面通过实施例对本发明作进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1:
本发明的一种基于Hystrix框架的动态熔断判断方法,包含以下步骤:
步骤一:通过压力测试得出当前服务业务的最大负载量maxF;
通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。
步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);
在最大负载量的压力下测试得出服务的请求失败率,统计出一段时间的最大与最小失败率值,在最后进行动态熔断测试时进行微调以更好的适应具体的环境。
步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;
步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。
熔断失败率算法具体为,
每秒请求率qps=totalRequests*1000/duringTimeInMilliseconds;
负载量f=qps*1000/meanTimeInMilliseconds;
动态失败率p=minErrorPercentage+(maxErrorPercentage-minErrorPercentage)*(1–f/maxF);
其中totalRequests表示一次统计中获取到的请求运行总数;duringTimeInMilliseconds表示一次统计的总时长;meanTimeInMilliseconds表示请求的平均响应时间。
实施例2:
一种基于Hystrix框架的动态熔断判断方法,包含以下步骤:
步骤一:通过压力测试得出当前服务业务的最大负载量maxF;
通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。
步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);
在最大负载量的压力下测试得出服务的请求失败率,通过服务平时的性能估算一段时间的最大与最小失败率值,在最后进行动态熔断测试时可以进行微调以更好的适应具体的环境。
步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;
步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。
熔断失败率算法具体为,
每秒请求率qps=totalRequests*1000/duringTimeInMilliseconds;
负载量f=qps*1000/meanTimeInMilliseconds;
动态失败率p=minErrorPercentage+(maxErrorPercentage-minErrorPercentage)*(1–f/maxF);
其中totalRequests表示一次统计中获取到的请求运行总数;duringTimeInMilliseconds表示一次统计的总时长;meanTimeInMilliseconds表示请求的平均响应时间。
本说明书中所描述的以上内容仅仅是对本发明所作的举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种修改或补充或采用类似的方式替代,只要不偏离本发明说明书的内容或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (5)
1.一种基于Hystrix框架的动态熔断判断方法,其特征在于包含以下步骤:
步骤一:通过压力测试得出当前服务业务的最大负载量maxF;
步骤二:通过测试得出不同压力下的业务失败率范围,最小失败率minErrorPercentage与最大失败率maxErrorPercentage;
步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;
步骤四:改造Hystrix框架源码,重写断路器实现类,根据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。
2.按照权利要求1所述的基于Hystrix框架的动态熔断判断方法,其特征在于:所述步骤一具体为,通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds),duringTimeInMilliseconds表示一次统计的总时长,meanTimeInMilliseconds表示请求的平均响应时间。
3.按照权利要求1所述的基于Hystrix框架的动态熔断判断方法,其特征在于:所述步骤二具体为,在最大负载量的压力下测试得出服务的请求失败率,统计出一段时间的最大与最小失败率值,在最后进行动态熔断测试时进行微调以更好的适应具体的环境。
4.按照权利要求1所述的基于Hystrix框架的动态熔断判断方法,其特征在于:所述步骤二具体为,在最大负载量的压力下测试得出服务的请求失败率,通过服务平时的性能估算一段时间的最大与最小失败率值,在最后进行动态熔断测试时可以进行微调以更好的适应具体的环境。
5.按照权利要求1所述的基于Hystrix框架的动态熔断判断方法,其特征在于:所述熔断失败率算法具体为,
每秒请求率qps=totalRequests’*1000/duringTimeInMilliseconds;
负载量f=qps*1000/meanTimeInMilliseconds;
动态失败率p=minErrorPercentage+(maxErrorPercentage-minErrorPercentage)*(1–f/maxF);
其中totalRequests’表示一次统计中获取到的请求运行总数;
duringTimeInMilliseconds表示一次统计的总时长;
meanTimeInMilliseconds表示请求的平均响应时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711202905.7A CN108009075B (zh) | 2017-11-27 | 2017-11-27 | 基于Hystrix框架的动态熔断判断方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711202905.7A CN108009075B (zh) | 2017-11-27 | 2017-11-27 | 基于Hystrix框架的动态熔断判断方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009075A CN108009075A (zh) | 2018-05-08 |
CN108009075B true CN108009075B (zh) | 2018-10-09 |
Family
ID=62053733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711202905.7A Active CN108009075B (zh) | 2017-11-27 | 2017-11-27 | 基于Hystrix框架的动态熔断判断方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009075B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108712309B (zh) * | 2018-06-11 | 2022-03-25 | 郑州云海信息技术有限公司 | 一种微服务架构下的微服务节点防护方法和系统 |
CN109240765B (zh) * | 2018-08-28 | 2021-08-10 | 中国联合网络通信集团有限公司 | 服务资源的熔断方法、装置、设备及计算机可读存储介质 |
CN109743358B (zh) * | 2018-12-13 | 2022-10-21 | 平安普惠企业管理有限公司 | 异步消息接口熔断控制方法、装置、计算机设备及存储介质 |
CN110162344B (zh) * | 2019-04-15 | 2023-03-31 | 深圳壹账通智能科技有限公司 | 一种隔离限流的方法、装置、计算机设备及可读存储介质 |
CN110187995B (zh) * | 2019-05-30 | 2022-12-20 | 北京奇艺世纪科技有限公司 | 一种熔断对端节点的方法及熔断装置 |
CN110286890A (zh) * | 2019-06-10 | 2019-09-27 | 天翼电子商务有限公司 | 异构语言应用的调用方法、系统、介质及装置 |
CN111026606A (zh) * | 2019-11-13 | 2020-04-17 | 苏宁云计算有限公司 | 基于hystrix熔断器监控的报警方法、装置及计算机设备 |
CN112965823B (zh) * | 2021-03-24 | 2023-12-26 | 百度在线网络技术(北京)有限公司 | 调用请求的控制方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254331A (zh) * | 2016-07-28 | 2016-12-21 | 努比亚技术有限公司 | 一种终端应用请求管理装置及方法、通信系统 |
CN106776099A (zh) * | 2017-01-11 | 2017-05-31 | 北京皮尔布莱尼软件有限公司 | 一种服务熔断隔离系统和方法 |
CN107026839A (zh) * | 2016-11-16 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 一种攻击请求处理方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107181664B (zh) * | 2016-03-10 | 2021-04-09 | 创新先进技术有限公司 | 一种自动熔断的消息发送方法、装置及系统 |
CN106375150A (zh) * | 2016-08-31 | 2017-02-01 | 广州唯品会信息科技有限公司 | 服务器的断开控制方法及装置 |
CN107171828B (zh) * | 2017-04-18 | 2020-04-10 | 北京思特奇信息技术股份有限公司 | 一种应对远程调用依赖的超时熔断方法和系统 |
-
2017
- 2017-11-27 CN CN201711202905.7A patent/CN108009075B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254331A (zh) * | 2016-07-28 | 2016-12-21 | 努比亚技术有限公司 | 一种终端应用请求管理装置及方法、通信系统 |
CN107026839A (zh) * | 2016-11-16 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 一种攻击请求处理方法和装置 |
CN106776099A (zh) * | 2017-01-11 | 2017-05-31 | 北京皮尔布莱尼软件有限公司 | 一种服务熔断隔离系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108009075A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009075B (zh) | 基于Hystrix框架的动态熔断判断方法 | |
US10432533B2 (en) | Automatic detection and prevention of network overload conditions using SDN | |
US9948791B2 (en) | Sharing group notification | |
CN109240765A (zh) | 服务资源的熔断方法、装置、设备及计算机可读存储介质 | |
US9098341B2 (en) | Service manager for adaptive load shedding | |
WO2018057368A1 (en) | Methods, systems, and computer readable media for discarding messages during a congestion event | |
CN101394362B (zh) | 基于流分片的对多核网络处理器进行负载均衡的方法 | |
CN110224944B (zh) | 一种分布式网络流量控制方法和装置 | |
US9801204B2 (en) | Sending node and buffer status reporting method | |
EP3264723B1 (en) | Method, related apparatus and system for processing service request | |
US7444451B2 (en) | Adaptive interrupts coalescing system with recognizing minimum delay packets | |
US11088966B2 (en) | Managing congestion in a network adapter based on host bus performance | |
CN110073639A (zh) | 分组丢失容忍传输控制协议拥塞控制 | |
CN109768907A (zh) | 一种can总线波特率自适应设置方法 | |
JP7037066B2 (ja) | 評価装置、評価方法および評価プログラム | |
US10257366B2 (en) | Method, system and apparatus for managing communication sessions using joint storage | |
CN112433881A (zh) | 一种分布式存储系统的数据恢复方法和装置 | |
CN112988434B (zh) | 一种服务熔断器、服务熔断方法以及计算机可读存储介质 | |
CN110858986A (zh) | 带宽调整方法、装置、通信设备及计算机可读存储介质 | |
JP2016200897A (ja) | 情報処理装置、情報処理装置の制御方法及び制御装置 | |
US9391911B1 (en) | Congestion window modification | |
US10172032B2 (en) | Admission control of 4G/LTE conversational sessions by cellular backhaul satellite network | |
US8725868B2 (en) | Interactive service management | |
JP2017506847A (ja) | マルチネットワークルータにおけるフェイルオーバーとフェイルバックを提供する方法とシステム | |
CN107896196B (zh) | 一种分配报文的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |