服务容错
1.系统遭受恶意爬虫袭击,在放大效应下没有对下游依赖服务做好限速处理,最终导致下游服务崩溃
2.系统依赖的某个服务发生延迟或者故障,数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应,导致整个系统拒绝对外提供服务。
解决方案
1.限流模式:
常用于下游服务容量有限,但又怕出现突发流量猛增(如恶意爬虫,节假日大促等)而导致下游服务因压力过大而拒绝服务的场景。常见的限流模式有控制并发和控制速率,一个是限制并发的数量,一个是限制并发访问的速率。
2.超时:
为服务调用方设置一个调用服务的时间限制,超时后可以使用sentinei的降级机制,调用准备好的预处理方案。
3.仓壁模式:
仓壁隔离,就是将资源进行隔离,调用方不能无限制的进行调用,举个例子,假如有一艘船,其中一个船舱漏水了,如果我们将每个船舱之间通过钢板顶死,进行隔离,那么其中一个漏水就不会影响到其他船舱,我们的船还可以继续航行。
4.熔断器:
在调用方进行定义请求失败的策略,当失败的次数打到一定的数量时,熔断器将会打开,将不会再调用到底层的服务,之后每隔一定的时间(设置的熔断窗口时间)将释放一个请求到底层的服务,如果还是失败则继续保持熔断器的开启直到下一次熔断串口的时间,如果请求成功了,则关闭熔断器,开始正常的调用。
sentinel的基本使用
1.加入sentinel的依赖
com.alibaba.cloud spring-cloud-starter-alibaba-sentinel jackson-dataformat-xml com.fasterxml.jackson.dataformat 1 2 3 4 5 6 7 8 9 10 11 2.下载sentinel jar包并cmd运行java -Dserver.port=8840 -Dcsp.sentinel.dashboard.server=localhost:8840 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.1.jar
3.修改yml配置
spring:
cloud:
sentinel:
transport:
port: 8719
dashboard: localhost:8840 # dashboard地址
client-ip: localhost # 本机地址,可以不填
1
2
3
4
5
6
7
4.访问 localhost:8840 用户名/密码为:sentinel
5.因为sentinel控制台是懒加载,需要先访问服务控制台才能加载出来。
6.加载出来后就可以对它进行管控
————————————————
版权声明:本文为CSDN博主「excellent_yb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/excellent_yb/article/details/116275441