首页 > 其他分享 >SpringCloud入门学习笔记(四)

SpringCloud入门学习笔记(四)

时间:2024-08-02 17:00:10浏览次数:15  
标签:令牌 服务 入门 SpringCloud 笔记 访问 算法 限流 Sentinel

Sentinel篇 

SpringCloud入门学习笔记(一)-CSDN博客

SpringCloud入门学习笔记(二)-CSDN博客

SpringCloud入门学习笔记(三)-CSDN博客

前言

  在互联网应用过程中,有很多的高并发访问场景,类似于双十一这种活动,特点是访问量剧增,访问量超出系统所能处理的最大并发数。

  如果没有保护机制的话,假设让这些流量都进入服务器就会导致系统不可用,造成巨大的损失。为了避免这种情况的发生,我们需要采用保护策略,常见的有服务降级、限流和熔断等。

  接下来介绍服务限流和服务熔断。

一、服务限流

  限流的目的是为了防止大量数据涌入服务器,通过限制并发访问数量和同一时间窗口内处理的请求数量来保护系统,一旦达到限制就采用对应的拒绝策略,比如跳转到错误页面、进入排队系统等等。本质上就是限制了一部分用户的使用权来为其他用户提供更好的服务。

1、限流的算法

1.1 计数器算法

  很好理解,计数器就是在指定的周期内,记录访问的数量,当访问次数达到阈值的时候,就触发限流策略,进入下一个周期后访问次数清0。

  该算法优点是实现简单,缺点是存在临界问题,在上一个周期末尾和下一个周期开始访问的话,短时间内访问量会剧增。

1.2 滑动窗口算法

  为了解决上面的临界问题,提出了滑动窗口算法。实现的原理是将固定窗口分为多个小窗口,分别记录这个小窗口的访问次数,然后滑动窗口确保滑动范围内只可以处理固定数量的次数,之后删除过期的小窗口。这个经常刷算法的同学应该比较了解,不过多介绍。

  Sentinel就是采用滑动窗口算法。

1.3 令牌桶限流算法

  令牌桶是网络流量整形和速度限制的常用办法。对于每一个请求,都需要在令牌桶中拿一个令牌,如果没有拿到令牌,则需要触发限流策略。

  原理也很简单,系统以一个恒定的速度生产令牌,放到桶里,请求过来就去桶里拿令牌获取访问资格。如果访问大于生产,令牌就被取完了,后面的请求就被限流;如果访问等于生产,系统平稳运行;如果访问小于生产,系统并发不高,正常处理。

1.4 漏桶流算法

  主要作用是控制数据注入网络的速度,平滑网络上的突发流量。

  原理和令牌桶相似,内部也维护一个容器,以固定速度出水,不管生产者的需求有多大,消息处理能力取决于消费者。缺点是漏桶无法处理短时间内的突发流量。

二、服务熔断和降级

  在微服务架构中,服务被拆分成细粒度的微服务,会出现请求链路较长的情况,一个简单的请求需要调用多个微服务。在高并发场景中,这些依赖服务的稳定性对系统影响很大,如果某个服务因为网络延迟或者访问超时不可用,就会导致当前请求堵塞。

  服务熔断就是用来解决这种情况,如果当前某个服务提供者因为某些问题无法提供服务,为了防止整个系统雪崩,就把有问题的这个服务隔离出来,断绝和外界的联系,触发熔断之后,后续一段时间该服务调用者都直接报失败。

  服务降级有几个参考的指标,一般包括:

  • 平均响应时间
  • 异常比例
  • 异常数量

三、Sentinel 

1、概念

  Sentinel是面向分布式服务框架的轻量级流量控制组件。以流量为切入点,从限流、流量整形、服务降级、系统负载保护等多个维度保护系统。

2、Sentinel特性

  • 丰富的应用场景
  • 实时监控
  • 开源生态支持
  • SPI扩展点支持

3、Sentinel组成

  • 核心库:不依赖任何框架,能够运行所有的java运行时环境,同时对Dubbo、Spring Cloud等框架有较好的支持。

  • 控制台: 基于Springboot开发,打包之后直接运行,不需要额外的tomcat等应用容器

4、应用步骤

  • 定义资源

  • 定义限流规则

  • 检验规则是否生效 

标签:令牌,服务,入门,SpringCloud,笔记,访问,算法,限流,Sentinel
From: https://blog.csdn.net/ohligay/article/details/140872097

相关文章

  • SpringCloud入门学习笔记(三)
    Nacos篇SpringCloud入门学习笔记(二)-CSDN博客SpringCloud入门学习笔记(一)-CSDN博客前言  上篇中提到服务消费者要去调用多个服务提供者构成的集群,此时需要一个三方软件来同步更新提供者的地址信息,同时供服务消费者来此处访问地址,为了解决这类问题,就需要引入服务注册组件(功......
  • 模电笔记——半导体二极管及其基本电路
        tips:本章节的笔记已经打包到word文档里啦,建议大家下载文章顶部资源(手机端下载后里面的插图可能会乱,建议电脑下载,兼容性更好且易于观看),若有不足之处请多多包含,大家可以评论指正或给出建议。    在讲之前先允许我浅谈一下电子技术相关概念与模拟电子系统的......
  • 苍穹外卖项目--学习笔记
    苍穹外卖学习文档软件开发整体介绍软件开发流程需求分析需求规格说明书、产品原型设计UI设计、数据库设计、接口设计编码项目代码、单元测试测试测试用例、测试报告上线运维软件环境安装、配置角色分工项目经理对整体项目负责,任务分配、把控进度产品经理进行......
  • SpringCloud EasyConfig介绍与使用
    maven引入方式<dependency><groupId>icu.liufuqiang</groupId><artifactId>spring-cloud-easy-config-starer</artifactId><version>0.1.0</version></dependency>仓库地址https://gitee.com/LiuFqiang/spring-c......
  • 【C++】学习笔记——智能指针
    文章目录二十一、智能指针1.内存泄漏2.智能指针的使用及原理RAII智能指针的原理auto_ptrunique_ptrshared_ptrshared_ptr的循环引用weak_ptr删除器未完待续二十一、智能指针1.内存泄漏在上一章的异常中,我们了解到如果出现了异常,会中断执行流,跳转到catch处。但......
  • 【C++】学习笔记——特殊类的设计
    文章目录二十二、特殊类的设计1.请设计一个类,不能被拷贝2.请设计一个类,只能在堆上创建对象3.请设计一个类,只能在栈上创建对象4.请设计一个类,不能被继承5.请设计一个类,只能创建一个对象(单例模式)未完待续二十二、特殊类的设计1.请设计一个类,不能被拷贝拷贝......
  • Pytorch笔记|小土堆|P10-13|transforms
    transforms对图像进行改造最靠谱的办法:根据help文件自行学习transforms包含哪些工具(类)以及如何使用————————————————————————————————————自学一个类时,应关注:1、如何使用各种工具(类)的使用思路:创建对象(实例化)——>传入参数,调用函数(如有__......
  • SpringCloud使用Sentinel,Sentinel持久化,Sentinel使用nacos持久化
    Sentinel官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html下载Sentinel:https://github.com/alibaba/Sentinel/releasessentinel控制台文档:https://sentinelguard.io/zh-cn/docs/dashboard.html参考:https://www.cnblogs.com/ralgo/p/14152390.html启动Sentinel命令:j......
  • 【笔记】计数选讲:容斥、LGV、集合幂级数、GF 2024.8.2
    今天写的很乱。[HEOI2013]SAO容斥。因为我们已经知道父亲\(<\)儿子时的情况(\(n!/\prod_isiz_i\),也适用于森林),那么儿子\(<\)父亲的情况就容斥掉,无限制的就当作那条边不存在。树上背包,记录当前节点为根的连通块大小和容斥系数的积。*[ECFinal23A]DFSOrder4转写为:统计多......
  • SAP ABAP 基础与入门(一、数据类型定义与字符串处理)
    1.   基础1.1.  基本数据类型C、N、D、T、I、F、P、X、string、XstringP:默认为8字节,最大允许16字节。最大整数位:16*2=32-1=31-14(允许最大小数位数)=17位整数位类型最大长度(字符数)默认长度说明C1~262143个字符1 字符普通字符(常用于名称、备......