
Sentinel
SpringCloudAlibaba Sentinel
vinylon1022
这个作者很懒,什么都没留下…
展开
-
Sentinel源码分析十一、Spring集成Sentinel
本文主要分析spring-cloud-starter-alibaba-sentinel中的源码,看看springcloud alibaba环境下集成sentinel做了些什么,实际上已经超出了Sentinel自身部分了。首先既然是springcloud,那么配置入口先找spring.factories文件中的配置org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.alibaba.cloud.sentinel.Senti原创 2020-12-18 16:46:09 · 742 阅读 · 1 评论 -
Sentinel源码分析十、规则持久化
我们知道,Sentinel在规则匹配时是从内存中取规则集的。如果服务器重启,内存中的规则集就没了,因此有必要做规则集的持久化。Sentinel定义了两个接口来实现数据的持久化:ReadableDataSource:读数据源负责监听持久化的数据源的变更,在接收到变更事件时将最新的数据更新WritableDataSource:写数据源负责将变更后的规则写入到持久化的数据源中下面我们来看一下 ReadableDataSource 接口的具体的定义:public interface ReadableDa原创 2020-12-18 15:47:16 · 449 阅读 · 2 评论 -
Sentinel源码分析九、扩展点分析
先回顾一下Sentinel的模块结构以及相互关系:简单说明上图的几个模块sentinel-dashboard:一个通过 spring boot 实现的 web 应用,相当于是 Sentinel 的 OPS 工具,通过 dashboard 我们可以更方便的对规则进行调整、查询实时统计信息等,但是这并不是必须的,没有 dashboard 我们也能使用 Sentinel,甚至我们可以通过 Sentinel 提供的 api 来实现自己的 dashboard。sentinel-transport:一个 se原创 2020-12-18 15:03:45 · 574 阅读 · 0 评论 -
Sentinel源码分析八、滑动窗口
前面已经讨论了Sentinel中各个Slot的作用。其中StatisticSlot是用来做统计的,后面的slot都是基于StatisticSlot的统计值进行规则操作。因此有必要详细分析一下StatisticSlot中是如何统计的。 首先需要明确一点,StatisticSlot的实时统计是基于滑动窗口来实现的。首先先看StatisticSlot中的entry方法:@Overridepublic void entry(Context context, ResourceWrapper resourceWr原创 2020-12-14 16:52:38 · 267 阅读 · 0 评论 -
Sentinel源码分析七、其他slot
SystemSlot@Overridepublic void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, boolean prioritized, Object... args) throws Throwable { SystemRuleManager.checkSystem(resourceWrapper); fireEntr原创 2020-12-14 14:57:48 · 315 阅读 · 0 评论 -
Sentinel源码分析六、StatisticSlot
StatisticSlot先上代码@Override public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, boolean prioritized, Object... args) throws Throwable { try { // Do some checking.原创 2020-12-14 14:27:38 · 236 阅读 · 0 评论 -
Sentinel源码分析五、ClusterBuilderSlot
ClusterBuilderSlot分析这个Slot就简单很多了。先上源码@Overridepublic void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, boolean prioritized, Object... args) throws Throwable { if (clusterNode == null) {原创 2020-12-14 14:01:14 · 533 阅读 · 1 评论 -
Sentinel源码分析四、NodeSelectorSlot
aa原创 2020-12-14 13:45:35 · 571 阅读 · 0 评论 -
Sentinel源码分析三、SlotChain链
前面提到过埋点入口,现在先从入口方法看起:com.alibaba.csp.sentinel.SphU#entry(java.lang.String)public static Entry entry(String name) throws BlockException { return Env.sph.entry(name, EntryType.OUT, 1, OBJECTS0);}com.alibaba.csp.sentinel.CtSph#entry(java.lang.String,原创 2020-12-11 15:18:51 · 483 阅读 · 0 评论 -
Sentinel源码分析二、几个核心概念
上篇我们简单了解了一下Sentinel的整体情况。在学习任何一个框架之前都要了解和熟悉相关的概念,带着这些概念去看源码时才能更容易理解。因此本篇主要先讲解几个Sentinel中的核心概念,加深对它的理解。ResourceSlotContextEntryNodeMetricResourceResource 是Sentinel中最重要的一个概念,代表一个资源。任何后面需要保护的内容都可抽象成为资源。Sentinel 通过资源来保护具体的业务代码或其他后方服务。用户只需要为受保护的代码或服务定原创 2020-12-11 14:07:55 · 500 阅读 · 1 评论 -
Sentinel源码分析一、全观
Sentinel是啥Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。那么Sentinel 和之前常用的熔断降级库 Netflix Hystrix 有什么异同呢?首先官网上有一个介绍,这里摘录一个总结表格。具体对比参考链接查看对比内容SentinelHystrix隔离策略信号量隔离线程池隔离/信号量隔离熔断降级策略基于响应时间或失败比率原创 2020-12-11 11:22:24 · 1075 阅读 · 3 评论