java服务框架高级之微服务保护 Sentinel 限制规则,流控模式,流控效果 线程隔离和熔断降级 授权规则 规则持久化
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html。这种情况对热度不同商品设置不同限流比较好用。哪个需要限流,就在哪个进行高级流控设置。所以我们要在对应的方法上加上。
初识Sentinel
雪崩问题:

解决雪崩问题的常见方式有四种:
1.超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
2.舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
但是服务出现故障后还是会分配原来的线程数,就造成浪费
3.熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
4.流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。(主要是预防)

服务保护技术对比:

认识Sentinel
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html

sentinel官方提供了UI控制台,方便我们对系统做限流设置。大家可以在GitHub下载。
放到非中文目录下,然后运行:java -jar sentinel-dashboard-1.8.6.jar
然后访问:localhost:8080 即可看到控制台页面,默认的账户和密码都是sentinel

微服务整合sentinel

限制规则
簇点链路


其含义是限制 /order/{orderId}这个资源的单机QPS为1,即每秒只允许1次请求,超出的请求会被拦截并报错。

流控模式
流控模式-关联

哪个需要限流,就在哪个进行高级流控设置

流控模式-链路



流控效果
流控效果-warm up 
流控效果-排队等待

热点参数限流

所以我们要在对应的方法上加上@SentinelResourse("hot")注解

在热点规则新增热点规则

这种情况对热度不同商品设置不同限流比较好用
隔离和降级

Feign整合Sentinel



线程隔离

线程池隔离和信号量隔离的优缺点:
线程隔离(舱壁模式)


熔断降级
断路器熔断策略有三种:慢调用、异常比例、异常数
熔断策略-慢调用


熔断策略-异常比例、异常数


授权规则
授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。



自定义异常结果
规则持久化
规则管理模式



推荐使用push模式
实现push模式

1.引入依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2.配置nacos地址
在order-service中的application.yml文件配置nacos地址及监听的配置信息:
spring:
cloud:
sentinel:
datasource:
flow:
nacos:
server-addr: localhost:8848 # nacos地址
dataId: orderservice-flow-rules
groupId: SENTINEL_GROUP
rule-type: flow # 还可以是:degrade、authority、param-flow
二、修改sentinel-dashboard源码
SentinelDashboard默认不支持nacos的持久化,需要修改源码。







魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐







所有评论(0)