热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

核心组件_手把手带你领略双十一背后的核心组件Sentinel之流控规则

篇首语:本文由编程笔记#小编为大家整理,主要介绍了手把手带你领略双十一背后的核心组件Sentinel之流控规则相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了手把手带你领略双十一背后的核心组件Sentinel之流控规则相关的知识,希望对你有一定的参考价值。








文章目录


  • 1、Sentinel相关概念的介绍





    • 1.1


























      ?



      {1.1、什么是流控规则?}


      1.1?





    • 1.2














      Q


      P


      S


      ?



      {1.2、什么是QPS?}


      1.2QPS?





    • 1.3














      线








      ?



      {1.3、什么是线程数?}


      1.3线?

  • 2、流控模式





    • 2.1












      {2.1、直接}


      2.1





      • 2.1.1


























        Q


        P


        S



        {2.1.1、选择阈值类型为QPS}


        2.1.1QPS





      • 2.1.2


























        线









        {2.1.2、选择阈值类型为线程数}


        2.1.2线






    • 2.2












      {2.2、关联}


      2.2





    • 2.3












      {2.3、链路}


      2.3

  • 3、流控效果





    • 3.1


















      {3.1、快速失败}


      3.1





    • 3.2





      W


      a


      r


      m


      U


      p



      {3.2、Warm Up}


      3.2WarmUp





    • 3.3


















      {3.3、排队等待}


      3.3






1、Sentinel相关概念的介绍







1.1


























?



{1.1、什么是流控规则?}


1.1?



简单了说就是流量控制(所谓的流量就是请求或者叫访问)








1.2














Q


P


S


?



{1.2、什么是QPS?}


1.2QPS?



每秒请求数,当API的QPS达到阈值时进行限流








1.3














线








?



{1.3、什么是线程数?}


1.3线?



当请求API的线程数达到阈值时进行限流







2、流控模式







2.1












{2.1、直接}


2.1







2.1.1


























Q


P


S



{2.1.1、选择阈值类型为QPS}


2.1.1QPS

在这里插入图片描述

















,














1


s


访








,


访
























{连续刷新,当我间隔1s访问时,访问的是正常数据}


,1s访,访

在这里插入图片描述

















,














<


1


s





&#xff0c;





访



























{连续刷新&#xff0c;当我间隔<1s时&#xff0c;会访问到系统默认数据}


&#xff0c;<1s&#xff0c;访

在这里插入图片描述







2.1.2


























线









{2.1.2、选择阈值类型为线程数}


2.1.2线

在这里插入图片描述
使用JMeter进行模拟并发测试



零基础带你入门JMeter-模拟高并发接口测试&#xff0c;小白教程&#xff01;:https://blog.csdn.net/Kevinnsm/article/details/117302197?spm&#61;1001.2014.3001.5501


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述









2.2












{2.2、关联}


2.2



首先先了解一下什么是关联&#xff0c;所谓关联就是一个接口依赖另外一个接口&#xff0c;当后者的资源达到阈值时&#xff0c;会发生限流&#xff0c;而这个限流是限制的前者。比如接口A依赖接口B&#xff0c;接口B的QPS达到阈值&#xff0c;然后会对A进行限流































&#xff1f;



{为什么要这样做呢&#xff1f;}


&#xff1f;



这是为了保障那些非常重要的接口&#xff0c;如果某银行的信息修改接口能和支付接口相比吗&#xff1f;


在这里插入图片描述





使





p


o


s


t


m


a


n















{使用postman模拟测试}


使postman

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述











2.3












{2.3、链路}


2.3



当从某个接口过来的资源达到限流条件时&#xff0c;开启限流
















A











B



































&#xff0c;








A





Q


P


S























A














&#xff0c;





B
























{比如我A接口和B接口同时调用同一个服务&#xff0c;如果A的QPS达到阈值就会对A进性限流&#xff0c;而B不会受任何影响}


AB&#xff0c;AQPSA&#xff0c;B








3、流控效果







3.1


















{3.1、快速失败}


3.1



这个快速失败前面都使用过&#xff0c;就是当QPS或者线程数达到阈值时直接返回默认数据&#xff01;








3.2





W


a


r


m


U


p



{3.2、Warm Up}


3.2WarmUp



Warm Up主要应对这一种情况&#xff0c;服务器中的某个API平常没人访问&#xff0c;突然一下来了海量的请求&#xff0c;如果直接放进来&#xff0c;那系统就直接GG了&#xff1b;所以需要预热&#xff0c;(比如我最开始处理QPS&#61;3的访问量&#xff0c;慢慢的经过10秒后&#xff0c;我能处理QPS&#61;10的访问量&#xff0c;就是这个意思&#xff0c;需要一定的时间预热&#xff09;


在这里插入图片描述
初始值怎么计算呢&#xff1f;比如上方这张图&#xff0c;初始的QPS&#61;9/3&#61;3&#xff0c;经过五秒后能达到QPS&#61;9&#xff0c;系统默认值是除以3.







3.3


















{3.3、排队等待}


3.3



所谓的排队等待就是如果达到了阈值&#xff0c;那么其他的请求就在一边排队等着


在这里插入图片描述
上面我设置了QPS&#61;1的阈值&#xff0c;也就是一秒只能一个请求&#xff1b;超过了就在那等着

在这里插入图片描述
然后从控制台就可以看出一秒处理一个请求
在这里插入图片描述
在这里插入图片描述






推荐阅读
  • 通过与阿里云的合作,牛客网成功解决了跨国视频面试中的网络卡顿问题,为求职者和面试官提供了更加流畅的沟通体验。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ... [详细]
author-avatar
紫云轻梦lyq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有