广告
返回顶部
首页 > 资讯 > 前端开发 > html >Sentinel的工作流程是什么
  • 261
分享到

Sentinel的工作流程是什么

2024-04-02 19:04:59 261人浏览 泡泡鱼
摘要

本篇内容主要讲解“Sentinel的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sentinel的工作流程是什么”吧!Sentinel统计QPS

本篇内容主要讲解“Sentinel的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sentinel的工作流程是什么”吧!

Sentinel统计QPS使用的是时间窗口+Bucket,并且通过循环复用Bucket以减少对内存的占用,在统计QPS时,更是利用当前时间戳定位Bucket,使用LongAdder统计时间窗口内的请求成功数、失败数、总耗时优化并发,通过定时任务递增时间戳避免每次都使用System获取当前时间。可以看到Sentinel在性能方面所做出的努力,Sentinel尽最大可能降低自身对应用的影响。

Sentinel会为每个资源(接口)创建一个保存一分钟内时间窗口为1秒的Bucket数组以及一个保存一秒钟内以500ms为时间窗口的Bucket数组,将这两个数组包装为一个node,以统计该接口的请求数据。每个Bucket记录一个时间窗口内的请求总数、失败总数、总耗时(通过总耗时可计算平均耗时)、被限流或者被熔断的请求总数。

Sentinel的工作流程是什么

因此,Sentinel消耗的内存至少是资源总数乘以每个资源对应的Node占用的内存大小,每个Node占用的内存大小即为一个大小为2的Bucket数组和一个大小为60的Bucket数组所占用的内存。

Sentinel工作流程源码分析

Sentinel通过复用Bucket降低对内存的消耗,使用LongAdder降低并发统计数据对性能的消耗,除这些之外,Sentinel通过责任链模式实现统计、限流、熔断降级等功能,实现局部无锁化。

Sentinel的基本使用:

Sentinel的工作流程是什么

Sentinel实现统计、限流、熔断降级等功能由一个个ProcessorSlot完成,例如,统计资源当前时间窗口的请求总数、失败总数等由StatisticSlot完成,判断当前请求是否需要限流由FlowSlot完成,判断当前请求是否需要熔断降级由DegradeSlot完成。

Sentinel的工作流程是什么

这些ProcessorSlot按照严格的顺序包装成一个链表,比如StatisticSlot在FlowSlot之前,FlowSlot在DegradeSlot之前。

Sentinel的工作流程是什么

ProcessorSlot的entry方法在接收到客户端请求时或者客户端向服务端发送请求之前被调用,exit方法则是在服务端处理完请求(包括异常完成)时或者客户端发送请求完成时被调用。每个ProcessorSlot通过fireEntry方法或者fireExit方法向下传递信号。

看过Netty源码的朋友应该对这种设计模式的使用并不陌生,Netty也是通过责任链模式将处理请求的Handler包装为链表,实现局部串行处理请求。但Sentinel的ProcessorSlot与Netty的Handler有些区别,ProcessorSlot的exit方法并不像Netty那样是从后往前传递的。

我们熟悉的shiro也是通过责任链实现(过滤器),所以Sentinel实现限流、熔断并不难理解。在不考虑集群限流的情况下。当SphU的entry方法被调用时,至少会经过StatisticSlot、FlowSlot、DegradeSlot这三个ProcessorSlot,其时序图如下。

Sentinel的工作流程是什么

当StatisticSlot的entry方法被调用时,由StatisticSlot根据资源获取资源的Node,根据当前时间戳从Node获取当前时间窗口的Bucket,然后将Bucket的请求总数自增1。StatisticSlot在entry方法中捕获异常,如果下游的ProcessorSlot抛出异常为BlockException或BlockException的子类,则将Bucket的限流总数自增1,否则将Bucket的异常总数自增1。

当FlowSlot的entry方法被调用时,检查为当前资源配置的限流规则是否满足限流条件,如果满足条件则抛出BlockException异常,表示当前请求被限流。由于Sentinel支持集群限流,所以限流的实现上比较复杂,我们暂不讨论。如果是单节点的限流,则实现上与熔断降级的实现差不多,本篇只介绍熔断降级的实现。

当DegradeSlot的entry方法被调用时,检查为当前资源配置的熔断降级规则是否满足条件,如果满足条件则抛出DegradeException异常,表示当前请求被熔断。

Sentinel熔断降级实现源码分析

Sentinel会为每个资源(ResourceWrapper)创建一个Node,用于统计请求数据(请求总数、异常总数、被限流或被熔断总数、总耗时),为限流和熔断降级功能提供支持。

Sentinel的工作流程是什么

ResourceWrapper的name为资源名称,也可以理解是接口url,但这样理解是不正确的。资源名称在我们配置限流规则或者熔断降级规则时也用到。

ResourceWrapper的entryType为流量类型,可取值为IN和OUT,IN表示流入类型,即服务端接收客户端请求;OUT为流出类型,即客户端向服务端发起请求。

ResourceWrapper的resourceType为资源类型,表示是Servlet还是rpcapi网关、数据库等。可见,Sentinel还支持对数据库的访问限流、熔断。

Sentinel提供的熔断降级功能,不仅可以在客户端使用,也可以在服务端使用,但一般会放在客户端,用于流量类型为OUT类型的资源的熔断降级,保证自身不受服务端的影响,不被服务端拖垮。

判断Sentinel的熔断降级功能是否支持在服务端执行,我们可通过阅读DegradeSlot的源码,查看是否限制了只有流量类型为EntryType.OUT时才生效。

Sentinel的工作流程是什么

当DegradeSlot的entry方法被调用时,由DegradeSlot调用DegradeRuleManager的checkDegrade方法检查当前请求是否满足某个熔断降级规则。

在学习如何使用Sentinel实现熔断降级时,我们是使用DegradeRuleManager加载我们配置的熔断降级规则的,所以DegradeSlot将check逻辑才交给DegradeRuleManager去完成。

Sentinel的工作流程是什么

DegradeRuleManager首先根据资源名称获取配置的熔断降级规则,因为我们可以对同一个资源配置多个熔断降级规则,所以返回的将是一个集合。然后遍历熔断降级规则,调用DegradeRule的passCheck方法将检查是否需要触发熔断的逻辑交给DegradeRule完成。如果对一个资源配置多个熔断降级规则,那么只要有一个熔断降级规则满足条件,就会触发熔断。

DegradeRule的passCheck方法源码如下。

Sentinel的工作流程是什么

从DegradeRule的passCheck方法的源码中,我们并未发现有任何地方限制熔断降级的触发只有流量类型为EntryType.OUT才生效,因此,熔断降级不仅可以用于客户端,也可以用于服务端。

熔断降级策略支持三种:

1、平均响应时间 (DEGRADE_GRADE_RT)

2、异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO)

3、异常数 (DEGRADE_GRADE_EXCEPTION_COUNT)。

官方文档在介绍DEGRADE_GRADE_EXCEPTION_COUNT策略的地方加了使用注意说明:注意由于统计时间窗口是分钟级别的,若  timeWindow 小于 60s,则结束熔断状态后仍可能再进入熔断状态。

这句话并不难理解,从DegradeRule的passCheck方法源码就能找到答案,如下图所示。

Sentinel的工作流程是什么

到此,相信大家对“Sentinel的工作流程是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Sentinel的工作流程是什么

本文链接: https://www.lsjlt.com/news/84883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Sentinel的工作流程是什么
    本篇内容主要讲解“Sentinel的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sentinel的工作流程是什么”吧!Sentinel统计QPS...
    99+
    2022-10-19
  • Git的工作流程是什么
    本文小编为大家详细介绍“Git的工作流程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Git的工作流程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Git 工作流程一般工作流程如下:克隆 Git 资...
    99+
    2023-06-17
  • springmvc的工作流程是什么
    Spring MVC的工作流程如下:1. 客户端发送HTTP请求到DispatcherServlet。2. DispatcherSe...
    99+
    2023-08-18
    springmvc
  • mvc的工作流程是什么
    MVC(Model-View-Controller)是一种软件设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(Vi...
    99+
    2023-10-26
    mvc
  • CSS的工作流程是什么
    本篇内容主要讲解“CSS的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS的工作流程是什么”吧! 从上面的页面渲染流程可以知道浏览器在解析了...
    99+
    2022-10-19
  • Djabgo的工作流程是什么
    Django的工作流程如下:1. 客户端发送HTTP请求到Django应用的服务器。2. 服务器接收请求并根据URL映射找到相应的视...
    99+
    2023-10-19
    Djabgo
  • Sentinel 流控的原理是什么
    Sentinel 流控的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。@ResoureSetinel 工作原理配置流...
    99+
    2022-10-19
  • 线程池的工作流程是什么
    本篇内容主要讲解“线程池的工作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“线程池的工作流程是什么”吧!线程池的各种参数面试的时候最常问的就是线程池的...
    99+
    2022-10-19
  • python中Pexpect的工作流程是什么
    这期内容当中小编将会给大家带来有关python中Pexpect的工作流程是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • HTTP协议的工作流程是什么
    这篇“HTTP协议的工作流程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“HTTP协议的工作流程是什么”文章吧。HTT...
    99+
    2023-06-27
  • apache和php的工作流程是什么
    Apache和PHP的工作流程如下:1. 客户端发送HTTP请求到Apache服务器。2. Apache服务器接收到请求后,根据请求...
    99+
    2023-08-31
    apache php
  • ssl卸载工作流程是什么
    SSL卸载是一种网络安全技术,其工作流程如下:1. 客户端发起SSL连接请求。2. 请求到达SSL负载均衡器。3. SSL负载均衡器...
    99+
    2023-09-05
    ssl
  • SAP工作流是什么
    本篇内容介绍了“SAP工作流是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是工作流工作流( Work Flow)就是自动...
    99+
    2023-06-05
  • php laravel框架的工作流程是什么
    PHP Laravel框架的工作流程如下: 路由:请求到达服务器后,Laravel会根据路由配置文件(routes/web.ph...
    99+
    2023-10-22
    php laravel
  • 网站开发的工作流程是什么
    这篇文章主要讲解了“网站开发的工作流程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“网站开发的工作流程是什么”吧!第一步、进行需求分析当客户提出想做一个什么样网站的时候,我们就必须弄清...
    99+
    2023-06-04
  • dnslog原理及工作流程是什么
    DNSlog是一种常用于渗透测试和恶意软件分析的技术,通过利用DNS协议的特性,实现收集和分析恶意软件的通信行为。DNSlog的工作...
    99+
    2023-09-25
    dnslog
  • 云服务器工作流程是什么
    云服务器工作流程通常包括以下几个步骤:1. 创建虚拟机实例:用户根据自己的需求,在云服务提供商的控制面板上创建虚拟机实例。用户可以选...
    99+
    2023-09-26
    云服务器
  • mybatis工作原理及流程是什么
    MyBatis是一种持久层框架,它的工作原理及流程如下:1. 配置文件加载:MyBatis首先读取配置文件(通常是mybatis-c...
    99+
    2023-08-14
    mybatis
  • git工作流指的是什么
    git工作流指的是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。git工作流是工作中团队成员遵守的一种代码管理方案,是有效的项目流程管理和高效的开发协同约定...
    99+
    2023-06-22
  • java中的工作流是什么
    Java中的工作流是指一种管理和协调业务流程的方式。它是一种可以自动化执行、监控和控制各种业务流程的技术,可以帮助组织优化和改进其业...
    99+
    2023-08-25
    java
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作