当前位置:网站首页>【微服务|Sentinel】热点规则|授权规则|集群流控|机器列表
【微服务|Sentinel】热点规则|授权规则|集群流控|机器列表
2022-06-27 13:44:00 【步尔斯特】
热点规则
热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:
商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
目前 Sentinel 自带的 adapter 仅 Dubbo 方法埋点带了热点参数,其它适配模块(如 Web)默认不支持热点规则,可通过自定义埋点方式指定新的资源名并传入希望的参数。
注意自定义埋点的资源名不要和适配模块生成的资源名重复,否则会导致重复统计。
通过@SentinelResource注解使得热点参数限流生效。
系统规则
系统保护规则是从应用级别的入口流量进行控制,从单台机器的总体 Load、RT、入口 QPS 和线程数四个维度监控应用数据,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。
系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。入口流量指的是进入应用的流量(EntryType.IN),比如 Web 服务或 Dubbo 服务端接收的请求,都属于入口流量。
系统规则支持以下的阈值类型:
- Load(仅对 Linux/Unix-like 机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的 maxQps * minRt 计算得出。设定参考值一般是 CPU cores * 2.5。
- CPU usage(1.5.0+ 版本):当系统 CPU 使用率超过阈值即触发系统保护(取值范围 0.0-1.0)。
- RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。
- 线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。
授权规则
黑白名单根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。
调用方信息通过 ContextUtil.enter(resourceName, origin) 方法中的 origin 参数传入。
黑白名单规则(AuthorityRule)非常简单,主要有以下配置项:
- resource:资源名,即限流规则的作用对象
- limitApp:对应的黑名单/白名单,不同 origin 用 , 分隔,如 appA,appB
- strategy:限制模式,AUTHORITY_WHITE 为白名单模式,AUTHORITY_BLACK 为黑名单模式,默认为白名单模式。
origin的传入,可通过重写API接口重写origin的获取方式,请求参数和请求头皆可。
相关代码:
实现类
import com.alibaba.csp.sentinel.adapter.servlet.callback.RequestOriginParser;
import javax.servlet.http.HttpServletRequest;
/** * @author issavior */
public class MyRequestOriginParser implements RequestOriginParser {
@Override
public String parseOrigin(HttpServletRequest httpServletRequest) {
// 请求头的key,根据key值获取value值,此value值会赋予origin,完成流控规则校验
return httpServletRequest.getParameter("service-name");
}
}
配置类
import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
/** * @author issavior */
@Configuration
public class SentinelConfig {
@Bean
public FilterRegistrationBean<Filter> webCallbackFilter() {
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
bean.setFilter(new CommonFilter());
bean.addUrlPatterns("/*");
bean.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
bean.setName("sentinelFilter");
bean.setOrder(1);
WebCallbackManager.setRequestOriginParser(new MyRequestOriginParser());
return bean;
}
}
最后在每次发送请求的时候,在请求参数或者请求头上带上对应key和对应value就可以了~
边栏推荐
- JVM performance tuning and monitoring tools -- JPS, jstack, jmap, jhat, jstat, hprof
- How to solve the problem of missing language bar in win10 system
- 清华&商汤&上海AI&CUHK提出Siamese Image Modeling,兼具linear probing和密集预测性能!...
- 解析Activity启动-生命周期角度
- buuctf misc 百里挑一
- OpenSSF安全计划:SBOM将驱动软件供应链安全
- 关于接口测试自动化的总结与思考
- Openhgnn releases version 0.3
- CMOS level circuit analysis
- Pytorch learning 3 (test training model)
猜你喜欢
【周赛复盘】LeetCode第81场双周赛
How to set the compatibility mode of 360 speed browser
Realization of hospital medical record management system based on JSP
What else can PLM do?
关于接口测试自动化的总结与思考
AXI總線
What if the win system cannot complete the update and is revoking the status change
快讯:华为启动鸿蒙开发者大赛;腾讯会议发布“万室如意”计划
【OS命令注入】常见OS命令执行函数以及OS命令注入利用实例以及靶场实验—基于DVWA靶场
Rereading the classic: the craft of research (1)
随机推荐
关于接口测试自动化的总结与思考
Half find (half find)
赛迪顾问发布《“十四五” 关键应用领域之数据库市场研究报告》(附下载)
Explore tidb lightning source code to solve the found bugs
Is there any discount for opening an account now? Is it safe to open an account online?
enable_ if
ensp云朵配置
How to solve the problem of missing language bar in win10 system
每日3题(1):找到最近的有相同 X 或 Y 坐标的点
力扣 第 81 场双周赛
Intranet learning notes (8)
防火墙基础之华为华三防火墙web页面登录
MySQL 索引及其分类
Quick news: Huawei launched the Hongmeng developer competition; Tencent conference released the "Wanshi Ruyi" plan
MySQL index and its classification
Completely solve the problem of Chinese garbled code in Web Engineering at one time
Quickly set up a website to visit foreign countries, set up SS and start BBR to quickly surf the Internet
Clear self orientation
AGCO AI frontier promotion (6.27)
jvm 性能调优、监控工具 -- jps、jstack、jmap、jhat、jstat、hprof