源码解读 Sentinel源码分析
cuishuangtodo
限流功能
中文读作:sin ti nao
技术选型:Sentinel vs Hystrix
【Sentinel(一)】Sentinel介绍与使用
Sentinel默认的日志输出文件位置为:/{username}/logs/csp/
日志格式为:
时间戳 | 该秒发生的第一个资源 | 资源名称,拦截的原因,接口调用来源,| 被拦截资源的调用者,被拦截的数量
启动Sentinel控制台
在https://github.com/alibaba/Sentinel/releases下载最新版本的dashboard
切换到该目录下
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -jar sentinel-dashboard-1.8.4.jar
mvn clean package
用时较长
用户名密码默认都是sentinel
更多可参考 可视化限流管理,Sentinel 控制台启动和接入
也可以在启动时指定:
java -Dsentinel.dashboard.auth.username=cuishuang -Dsentinel.dashboard.auth.password=12345678 -Dserver.servlet.session.timeout=120 -jar sentinel-dashboard-1.8.4.jar &
(刚进来控制台是空白的,需要和第一步中的Spring Boot项目绑定
配置 JVM 启动参数:-Dproject.name=sentinel-demo -Dcsp.sentinel.dashboard.server=127.0.0.1:8080 -Dcsp.sentinel.api.port=8719)
(需要使用Java 1.8版本, 参考切换Java版本)
官方文档: Sentinel: 分布式系统的流量防卫兵
添加流控规则
接口查询规则
运行下面命令,则会返回现有生效的规则:
curl http://localhost:8719/getRules?type=<XXXX>
其中,type有以下取值:
- flow 以 JSON 格式返回现有的限流规则;
- degrade 则返回现有生效的降级规则列表;
- system 则返回系统保护规则。
如:curl http://localhost:8719/getRules\?type\=flow
接口更改规则
curl http://localhost:8719/setRules?type=<XXXX>&data=<DATA>
其中,type 可以输入 flow、degrade 等方式来制定更改的规则种类,data 则是对应的 JSON 格式的规则。
更多可参考 Sentinel 实战-控制台篇
Go版本
Go版本的没有Dashboard
1 | tree -L 1 |
api:对外暴露的接口
core:核心实现
example:使用例子
exporter:Prometheus的exporter
ext:扩展接口,主要是动态规则配置中心扩展接口
logging:日志模块
pkg:第三方插件的实现,比如各个组件适用 Sentinel 的 adapter,以及 Sentinel 对接各种第三方配置中心的扩展实现
tests:测试类代码,包括单元测试、benchmark
util:工具类
1 | package main |
https://blog.csdn.net/u010853261/article/details/108787189
https://www.jianshu.com/p/c369603a00d6
Sentinel-Go 是基于 LeapArray 实现的滑动窗口算法
https://www.jianshu.com/p/e563e796ad67
https://blog.csdn.net/jike11231/article/details/123019283
原文链接: https://dashen.tech/2021/05/09/Sentinel限流框架的使用/
版权声明: 转载请注明出处.