Spring Cloud Alibaba微服务从入门到进阶(七)(服务容错-Sentinel)

雪崩效应

我们把基础服务故障,导致上层服务故障,并且这个故障不断放大的过程,成为雪崩效应。
雪崩效应,往往是因为服务没有做好容错造成的。
微服务常见容错方案
仓壁模式

比如让controller有自己独立的线程池,线程池满了就直接拒绝请求
断路器模式

对api进行监控,设置一段时间内的错误率、错误次数。

如果一段时间内达到预值,断路器就会打开,不去调用远程api了。

(断路器模式设计了半开状态,远程api恢复后,断路器可以再次闭合。)
使用Sentinel实现容错

Sentinel是一个实现服务容错的库。

微服务整合sentinel

加依赖(无注解、无配置)
服务整合Sentinel后,通过actuator/sentinel可以访问到
搭建Sentinel控制台
登录,账户/密码 sentinel/sentinel
目前控制台上什么都没有,在服务配置上整合sentinel的控制台地址
调用服务后再刷新控制台,可以看到服务(sentinel和ribbon一样都是懒加载的)
用@SentinelResource注解,进行限流和降级
可以把block/fallback抽离出业务代码,定义单独类
RestTemplate整合Sentinel

使用@SentinelRestTemplate注解

将注解加在服务初始化类上,就可以给RestTemplate整合Sentinel了
写测试代码(就是使用feign之前的那段代码)
查看sentinel控制台->簇点电路
多出来的两行就是@SentinelRestTemplate注解支持的。

RestTemplate整合Sentinel还提供了一个开关resttemplate.sentinel.enabled
Feign整合Sentinel

只需要添加配置 feign.sentinel.enabled = true
Sentinel控制台结果和上面整合RestTemplate效果一下
如果服务被流控了,不想抛异常,

可以在UserCenterFeignClient接口@FeignClient注解上指定fallback参数到指定的类上
该类实现UserCenterFeignClient接口
配置sentinel流控规则,实现效果是"一个默认用户",而不是抛异常了
Sentinel使用总结

相关推荐
码点滴1 小时前
什么时候用 DeepSeek V4,而不是 GPT-5/Claude/Gemini?
人工智能·gpt·架构·大模型·deepseek
heimeiyingwang1 小时前
【架构实战】状态机架构:订单/工单状态流转设计
观察者模式·架构·wpf
rKWP8gKv72 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
小江的记录本2 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
一切皆是因缘际会3 小时前
AI数字分身的底层原理:破解意识、自我与人格复刻的核心难题
大数据·人工智能·ai·架构
jinanwuhuaguo5 小时前
(第二十七篇)OpenClaw四月的演化风暴:OpenClaw 2026年4月全版本更新的文明级解读
大数据·人工智能·架构·kotlin·openclaw
James_WangA5 小时前
我给 AOI 设备装了一个 Agent,然后发现工具注册才是最难写的
架构·github
aXin_ya5 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务
James_WangA5 小时前
产线上跑 Agent:LLM 挂了不是 500 错误,是停线
架构·github
生成论实验室5 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构