Sentinel原理七:StatisticSlot

概述

StatisticSlot处于LogSlot 节点的下一位,作用是统计实时数据,例如线程数、异常请求数、通过请求数等,并执行注册的 ProcessorSlotEntryCallback 接口的回调方法。

阅读全文

Sentinel原理六:LogSlot

概述

LogSlot 是 ClusterBuilderSlot 节点后面的节点,负责记录异常日志。

阅读全文

Sentinel原理五:ClusterBuilderSlot

概述

ClusterBuilderSlot 处于 NodeSelectorSlot 后一个节点,负责集群节点的采集.

阅读全文

轮询方案

轮询方案

方案一

算法逻辑

  • 序号_index、一个当前权重current_weight;_
  • 循环
    • 计算新index=(index+1)/列表长度n
    • 列表中index位的元素的权重是否大于当前权重_current_weight,如果大于则选择该元素;_
    • _current_weight减去所有元素权重的最大公约数;_

_current_weight最开始设置为最大权重,如果current_weight小于等于0,则将其设置为最大权重。_
这个方式的特点就是找出第一个权重大于_current_weight的元素。_

阅读全文

Sentinel源码二:ProcessorSlotChain

概述

解析Entry源码中涉及到了ProcessorSlotChain,这篇对插槽链作一个解析.

阅读全文

Sentinel源码四:StatisticNode

概述

上一篇解析了 NodeSelectorSlot 对资源的收集,其中资源会保存为 DefaultNode,而 DefaultNode 的核心能力都依赖于 StatisticNode 实现,所以这篇对 StatisticNode 做一个详细的解析。

阅读全文

Sentinel源码三:NodeSelectorSlot

概述

之前解析了插槽链的入口ProcessorSlotChain和它的默认实现DefaultProcessorSlotChain。具体的处理逻辑由链表中的各个节点处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
public ProcessorSlotChain build() {
ProcessorSlotChain chain = new DefaultProcessorSlotChain();
chain.addLast(new NodeSelectorSlot());
chain.addLast(new ClusterBuilderSlot());
chain.addLast(new LogSlot());
chain.addLast(new StatisticSlot());
chain.addLast(new SystemSlot());
chain.addLast(new AuthoritySlot());
chain.addLast(new FlowSlot());
chain.addLast(new DegradeSlot());

return chain;
}

本文解析以下链表中的第一个节点:NodeSelectorSlot

NodeSelectorSlot 负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级;

阅读全文

sentinel源码

概述

最近对 sentinel 框架的使用作了一个了解,为了在团队内对 sentinel 做分享学习一下其中的原理。

阅读全文

Sentinel源码一:Entry

概述

最近对 sentinel 框架的使用作了一个了解,为了在团队内对 sentinel 做分享学习一下其中的原理。

阅读全文

Sentinel使用

概述

介绍

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel 具有以下特征:

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
  • 完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

阅读全文