初识Sentinel
雪崩问题:
解决雪崩问题的常见方式有四种:
1.超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
2.舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
但是服务出现故障后还是会分配原来的线程数,就造成浪费
3.熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
4.流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。(主要是预防)
服务保护技术对比:
认识Sentinel
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html
sentinel官方提供了UI控制台,方便我们对系统做限流设置。大家可以在GitHub下载。
GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
放到非中文目录下,然后运行:java -jar sentinel-dashboard-1.8.6.jar
然后访问:localhost:8080 即可看到控制台页面,默认的账户和密码都是sentinel
微服务整合sentinel
限制规则
簇点链路
其含义是限制 /order/{orderId}这个资源的单机QPS为1,即每秒只允许1次请求,超出的请求会被拦截并报错。
流控模式
流控模式-关联
哪个需要限流,就在哪个进行高级流控设置
流控模式-链路
流控效果
流控效果-warm up
流控效果-排队等待
热点参数限流
所以我们要在对应的方法上加上@SentinelResourse("hot")注解
在热点规则新增热点规则
这种情况对热度不同商品设置不同限流比较好用