go笔记-熔断器
参考:
[1] https://studygolang.com/articles/13254
[2] https://blog.luojilab.com/2019/12/16/zeroteam/You_have_to_know_the_rate_limit_of_the_series/
[3] https://www.cnblogs.com/li-peng/p/11050563.html
区别:(限速器 VS 熔断器)
限速器(limiter)可以限制接口自身被调的频率
熔断器可监控所调用的服务的失败、超时情况,当依赖的下游服务失败过高时,熔断器开启,不再调用下游服务,转向降级策略,从而避免雪崩。
文章[2]中:限流与熔断经常被人弄混,它们最大的区别在于限流主要在server实现,而熔断主要在client实现
熔断器有三种状态:
关闭
状态:服务正常,并维护一个失败率统计,当失败率达到阀值时,转到开启
状态开启
状态:服务异常,调用 fallback 函数,一段时间之后,进入半开启
状态半开启
装态:尝试恢复服务,失败率高于阀值,进入开启
状态,低于阀值,进入关闭
状态
github.com/afex/hystrix-go,提供了 go 熔断器实现,使用上面也很方便,首先创建一个熔断器
hystrix.ConfigureCommand(
"addservice", // 熔断器名字,可以用服务名称命名,一个名字对应一个熔断器,对应一份熔断策略
hystrix.CommandConfig{
Timeout: , // 超时时间 100ms
MaxConcurrentRequests: , // 最大并发数,超过并发返回错误
RequestVolumeThreshold: , // 请求数量的阀值,用这些数量的请求来计算阀值,熔断器是否打开要满足这个条件;这里的设置表示至少有4个请求才进行ErrorPercentThreshold错误百分比计算
ErrorPercentThreshold: , // 错误率阀值,百分比。达到阀值,启动熔断
SleepWindow: , // 熔断尝试恢复时间,单位毫秒
},
)
例子:
// SV熔断器
hystrix.ConfigureCommand(
"SV",
hystrix.CommandConfig{
Timeout: , // 超时时间 200ms
MaxConcurrentRequests: , // 最大并发数,超过并发返回错误
RequestVolumeThreshold: ,
ErrorPercentThreshold: ,
SleepWindow:
},
)
//hystrix.GetCircuit: 获取这次执行的breaker,测试时使用,查看断路器的状态
brker, _, _ := hystrix.GetCircuit("SV")
err := hystrix.Do("SV", func() error {
//正常处理
}, func(err error) error {
//兜底处理
if brker.AllowRequest() == false {
//记录一下
}
})
go笔记-熔断器的更多相关文章
- go微服务框架kratos学习笔记十(熔断器)
目录 go微服务框架kratos学习笔记十(熔断器) 什么是熔断 熔断器逻辑 kratos Breaker kratos 熔断逻辑 kratos熔断器使用说明 bladmaster client br ...
- SpringCloud学习笔记:熔断器Hystrix(5)
1. Hystrix简介 在分布式系统中,服务与服务之间相互依赖,一种不可避免的情况是某些服务会出现故障,导致依赖于它们的其他服务出现远程调度的线程阻塞. Hystrix提供熔断器功能,能够阻止分布式 ...
- spring cloud学习笔记四 熔断器Hystrix
我们知道分布式服务有这样一个特点,每一个微服务都有自己的业务,并且很多时候一个微服务的业务要依赖于其他微服务,如果这些相互关联的微服务中其中某个微服务请求失败时,就会导致其他调用它的微服务也会请求失败 ...
- Spring Cloud 熔断器
目录 Spring Cloud 熔断器 Hystrix ribbon中使用hystrix feign中使用hystrix Spring Cloud 熔断器 在微服务架构中,根据业务来拆分成一个个的服务 ...
- SpringCloud微服务学习笔记
SpringCloud微服务学习笔记 项目地址: https://github.com/taoweidong/Micro-service-learning 单体架构(Monolithic架构) Mon ...
- Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
原文链接:Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量 在 Kubernetes 中运行大规模以 Web 为中心的工作负载,最关键的需求之一就是在 L7 ...
- SpringBoot——学习笔记
关于微服务和SOA 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 官网教程学习ht ...
- Alibaba内部SpringCloud参考笔记,在GitHub一天就标星81.6k?
前言 阿里巴巴,作为国内互联网公司的Top,算是业界的标杆,有阿里背景的程序员,也更具有权威性.作为程序员,都清楚阿里对于员工要求有多高,技术人员掌握的技术水平更是望尘莫及.所以,大厂程序员的很多经验 ...
- Spring Cloud微服务学习笔记
Spring Cloud微服务学习笔记 SOA->Dubbo 微服务架构->Spring Cloud提供了一个一站式的微服务解决方案 第一部分 微服务架构 1 互联网应用架构发展 那些迫使 ...
随机推荐
- Apache coredump 问题发现与解决记录
目录 Apache coredump 问题发现与解决记录 背景 发现问题 解决问题 方法 1 方法 2 总结 Linux 程序编译链接动态库版本问题 ldd 命令 动态库的编译和 soname 线上 ...
- 【SpringCloud Eureka源码】从Eureka Client发起注册请求到Eureka Server处理的整个服务注册过程(下)
目录 一.Spring Cloud Eureka Server自动配置及初始化 @EnableEurekaServer EurekaServerAutoConfiguration - 注册服务自动配置 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...
- redis常见错误处理
--1]当内存不足引起 redis出错 先尝试下列语句,指定redis使用内存 redis-server.exe redis.windows.conf --maxheap 200mredis-ser ...
- Sql Server 查询外键对应的Table 的通用方法
SELECT oSub.name AS [子表名称] , fk.name AS [外键名称] , SubCol.name AS [子表列名] , oMain.name AS [主表名称] , Main ...
- 【AutoFac】依赖注入和控制反转的使用
在开始之前首先解释一下我认为的依赖注入和控制反转的意思.(新手理解,哪里说得不正确还请指正和见谅) 控制反转:我们向IOC容器发出获取一个对象实例的一个请求,IOC容器便把这个对象实例“注入”到我们的 ...
- C# 在PPT幻灯片中创建图表
图表能够很直观的表现数据在某个时间段的变化趋势,或者呈现数据的整体和局部之间的相互关系,相较于大篇幅的文本数据,图表更增加了我们分析数据时选择的多样性,是我们挖掘数据背后潜在价值的一种更为有效地方式. ...
- 前端入门10-JavaScript语法之对象
声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...
- vue webpack build时关闭debug和console
1.找到 webpack.prod.conf.js ,搜索 UglifyJsPlugin,添加配置 uglifyOptions: { compress: { warnings: false, drop ...
- 【Dojo 1.x】笔记4 文字动画效果
这个笔记,仅仅演示dojo/fx模块的slideTo()方法的简单使用. 有关该模块的用法,见API:有关Dojo的动画.效果,见页面 效果 和 动画 1. 页面组织 html部分同笔记3,js部 ...