Sentinel:面向分布式多语言异构服务架构的流量治理组件,主要以流量为切入点、从流量路由、流量控制、熔断降级、系统自适应过载保护、热点流量防护等多个维度来保护微服务的稳定性
官网:https://sentinelguard.io/zh-cn/docs/introduction.html
原理:
1、确认流量类型
2、治理策略
3、触发后的兜底行为
概念:
服务雪崩:由于一个微服务没有做限流或错误后,影响其他的调用交互,拖垮全局
服务降级:如果服务无法完成正常调用流程,就使用默认的托底方案来返回数据
服务熔断:分布式服务系统中,如果下游服务因为访问压力过大响应慢或者调用失败,上游服务为了保证系统的整体可用性,会暂时断开与下游服务的调用连接,服务熔断一般有三种状态:闭合,开启、半熔断
服务限流:限制进入系统的流量、以防止进入系统的流量过大而压垮系统
服务隔离:服务故障后,能够将故障产生的影响限制在某个具体的服务内,不会向其他服务扩散、也就不会对整体服务产生致命影响
服务超时:服务与服务之间互相调用现象形成一个调用链,主动调用其他服务接口的服务处于调用链上游,提供接口供其他服务调用的服务处于调用链下游,服务超时就是上游服务调用下游服务时,设置一个最大响应时间,如果超过这个最大响应时间,下游服务还没返回结果,则断开上游服务与下游服务之间的请求连接
服务流量控制大概流程:
1、启动注册中心nacos
2、启动sentinel
3、新建Maven项目微服务8001注册到nacos及 被sentinel监控到
修改pom.xml引入sentinel依赖
修改application配置文件,增加sentinel配置
spring:
sentinel
新建修改controller配置
启动微服务8001
验证结果
@SentinelResource注解说明
用于指定防护自资源、对配置的资源进行流量控制、熔断降级等功能