随笔分类 -  Sentinel源码解读

摘要:在sentinel中日志的处理都是通过RecordLog来进行,那么sentinel是如何日志实现呢? 如果业务代码中引入了sentinel-logging的话,那么会具体依赖logback等。如果没有,则使用java自带的日志框架JUL实现。对JUL的了解可以查看文章。 static { try 阅读全文
posted @ 2021-10-12 21:07 gaojy 阅读(669) 评论(0) 推荐(0) 编辑
摘要:sentinel-initFunc Sentinel提供了一套完整的流控配置UI界面,用于配置流控的各个参数,阈值。其实现的大体逻辑是引入一个web服务,这个web服务可以接收界面上的请求参数,来初始化阈值,流控规则等。并且与控制台服务sentinel-dashboard保持心跳。 那么这个web服 阅读全文
posted @ 2021-09-25 23:18 gaojy 阅读(557) 评论(0) 推荐(0) 编辑
摘要:FlowSlot流控规则 这里面主要是根据qps或者线程数配置,来做限流。 private static boolean passLocalCheck(FlowRule rule, Context context, DefaultNode node, int acquireCount, boolea 阅读全文
posted @ 2021-09-20 01:07 gaojy 阅读(87) 评论(0) 推荐(0) 编辑
摘要:AuthoritySlot 这个slot相对简单,看一下配置 实际上就是校验资源的来源白名单,允许或者不允许该资源被配置的来源访问。这里不过多的阐述。 SystemSlot 先说下LOAD和CPU使用率,这是使用了JVM自带的Mbean来处理 public void run() { try { Op 阅读全文
posted @ 2021-09-19 14:52 gaojy 阅读(112) 评论(0) 推荐(0) 编辑
摘要:概述 DegradeSlot是用于服务降级熔断。 在执行entry的过程中,对于处于熔断open状态的情况则判断是否已经过了熔断期且设置半开成功,那么就通过.否则不通过报DegradeException 对于处于降级状态即half-open的时候,则直接抛出DegradeException. 熔断器 阅读全文
posted @ 2021-09-16 23:29 gaojy 阅读(209) 评论(0) 推荐(0) 编辑
摘要:ClusterBuilderSlot源码解析 ClusterBuilderSlot里面有这么几个重要的属性 // static 有点意思 实际上全局的一个资源对应一个ClusterNode private static volatile Map<ResourceWrapper, ClusterNod 阅读全文
posted @ 2021-09-15 22:49 gaojy 阅读(94) 评论(0) 推荐(0) 编辑
摘要:NodeSelectorSlot解析 在理解这一章前,可以先阅读sentinel整体架构可能了解起来更有帮助。 在NodeSelectorSlot中维护这变量 private volatile Map<String, DefaultNode> map = new HashMap<String, De 阅读全文
posted @ 2021-09-15 22:18 gaojy 阅读(121) 评论(0) 推荐(0) 编辑
摘要:总体架构 上图是来自官网的总体架构图,这张图上可以清晰的看到整个流量控制以责任链的模式进行的,每一个slot负责特定的处理,后续会给大家具体讲解chain上每一个slot的功能。 NodeSelectorSlot 负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流 阅读全文
posted @ 2021-09-15 21:51 gaojy 阅读(1210) 评论(0) 推荐(0) 编辑
摘要:前言 在讲解滑动时间窗之前,有个问题可以思考一下,如何统计当前时间服务的QPS呢?博主在前公司的时候,他们是这么设计的,在分布式环境下,列如当前时间 2021-9-13 23:12:10, 那么解析成key = 2021-9-13-23-12-10,并通过这个key查询redis,获取一个整型的统计 阅读全文
posted @ 2021-09-14 13:46 gaojy 阅读(1743) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示