当前位置:网站首页>阿里云微服务(三)Sentinel开源流控熔断降级组件
阿里云微服务(三)Sentinel开源流控熔断降级组件
2022-07-06 09:19:00 【几何学家】
微服务中,稳定性一直是一个避不开的话题,很多时候,会遇到大流量忽然到系统上导致系统扛不住
比如淘宝的双十一促销可能会出现
1.瞬间洪峰超过最大负载
2.激增流量打垮系统
3.热点商品挤占正常流量
4.CPU Load高居不下
服务不可靠的可能原因:
1.RPC超时
2.异常比例升高
3.队列占满
4.线程池占满
微服务中偶尔会出现某个服务挂掉
如果该服务被拖垮导致自己不可用以后又会拖垮其他的服务,进而导致雪崩的情况
所以针对这几种微服务稳定性的场景,流量降级保证稳定性是非常重要的,为了解决这个问题,一般有以下几种措施
1.限流,把QPS限定到某个阈值
2.流量整形,流量是随机的不可预测的,很多时候我们需要把流量调整成想要的形状比如是缓慢增加而不是忽然增加
3.熔断降级,避免被其他服务拖垮
服务中一般分为consumer和provider:
在provider端应该对其进行限流保护,保证其不被激增的流量所打垮,为了保证provider的正常调用,我们可以
1.限流保护,过快的调用直接拒绝
2.授权保护,没授权的应用直接将拒绝
3.系统保护,load超出阈值停止服务
4.热点保护,增强版的限流保护
consumer端为了防止被不稳定的服务调用拖垮,当服务的调用超出了时间阈值或请求量的时候,自动熔断
Hystrix主打的是线程池隔离,优点是隔离的比较彻底,缺点是在服务调用比较多的时候,其会根据每一种服务调用都创建一个线程池,线程池又创建大量的线程,会有上下文切换的危害。ThreadLocal场景下会有问题,比如依赖进行ThreadLocal进行事物或某些标志位的传递
关于Sentinel先启动控制台,控制台启动以后在浏览器中访问sentinel的控制台
配置,接入sentinel
这时候调用接口
在浏览器可以看到调用结果,在控制台可以看到信息
使用控制台对该接口进行限流
可以发现当qps超过设置阈值时,熔断
下面介绍下gateway
相关介绍可以看下这篇帖子:
https://www.cnblogs.com/xuweiweiwoaini/p/13858898.html
在本地项目中配置相关信息
把demo开头的和httpbin开头的流量分别导入道不同的位置上去
调用一下demo接口
可以在foo-service-route中看到,访问几次之后就能在控制台上找到demo-gateway的应用了
在控制台中设置参数限流
边栏推荐
- [algorithm] sword finger offer2 golang interview question 8: the shortest subarray with a sum greater than or equal to K
- XV Function definition and call
- Devops' future: six trends in 2022 and beyond
- Combination of fairygui check box and progress bar
- [算法] 劍指offer2 golang 面試題2:二進制加法
- Halcon knowledge: gray_ Tophat transform and bottom cap transform
- [算法] 剑指offer2 golang 面试题9:乘积小于k的子数组
- [algorithm] sword finger offer2 golang interview question 13: sum of numbers of two-dimensional submatrix
- [GNSS] robust estimation (robust estimation) principle and program implementation
- 编辑距离(多源BFS)
猜你喜欢
[algorithm] sword finger offer2 golang interview question 8: the shortest subarray with a sum greater than or equal to K
[algorithme] swordfinger offer2 golang question d'entrevue 2: addition binaire
[算法] 剑指offer2 golang 面试题12:左右两边子数组的和相等
Dark chain lock (lca+ difference on tree)
几道高频的JVM面试题
[算法] 剑指offer2 golang 面试题9:乘积小于k的子数组
RTKLIB: demo5 b34f. 1 vs b33
C code implementation of robust estimation in rtklib's pntpos function (standard single point positioning spp)
服务未正常关闭导致端口被占用
The service robots that have been hyped by capital and the Winter Olympics are not just a flash in the pan
随机推荐
异常:IOException:Stream Closed
染色法判定二分图
Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
最短Hamilton路径 (状压DP)
Meanings and differences of PV, UV, IP, VV, CV
RTKLIB: demo5 b34f.1 vs b33
PR 2021 quick start tutorial, first understanding the Premiere Pro working interface
MySQL backup -- common errors in xtrabackup backup
Record: the solution of MySQL denial of access when CMD starts for the first time
[algorithm] sword finger offer2 golang interview question 4: numbers that appear only once
2年经验总结,告诉你如何做好项目管理
Mixed use of fairygui button dynamics
VLSM variable length subnet mask partition tips
2022国赛Re1 baby_tree
Pride-pppar source code analysis
wsl常用命令
Edit distance (multi-source BFS)
[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
The master of double non planning left the real estate company and became a programmer with an annual salary of 25W. There are too many life choices at the age of 25
Record: newinstance() obsolete replacement method