热门标签 | 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;超过了就在那等着

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






推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 如何方便地退订邮件列表,避免混乱和烦恼
    本文介绍了如何方便地退订邮件列表,避免混乱和烦恼。文章指出,退订邮件列表可能会造成混乱,特别是当被意外添加到列表中时。为了快速、轻松地取消订阅,建议不要将退订电子邮件发送到用于发布消息的电子邮件地址。文章还介绍了邮件列表由邮件列表软件控制,作为邮件列表成员,可以对该软件进行一些用户控制。一些邮件列表允许使用自动电子邮件地址退订,但这可能会带来一些混乱。最后,文章提到退订邮件列表需要向电子邮件服务器发送特殊命令来脱离列表。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
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社区 版权所有