草庐IT

微服务可用性之隔离限流降级

可用性之服务隔离服务隔离的目的在系统发生故障时限制其影响范围隔离在保障整个服务的可用性上具有重要作用隔离维度线程级别的隔离:不同的任务给不同的线程执行进程级别的隔离:将系统业务拆分成多个微服务,部署到不同的机器上进程间的通信方式:不同机器经过远程调用,相同机器通过内存,管道(内存中的一

4种典型限流实践保障应用高可用|云效工程师指北

大家好,我叫黄博文,花名延枚,目前负责云效旗下产品Flow流水线的设计和开发。在微服务架构下,服务越来越多,服务之间的调用也会越来越复杂。如何保障服务的高可用性就成为了一个挑战。之前我参与过的某个产品就曾出过故障,原因是某个API调用突然间增加了数十倍,导致服务负载过高,影响了用户使用。如果当时能够有一种机制能快速对这个异常的API进行限流或熔断,就能避免服务陷入不稳定的状况。云效自身使用阿里云AHAS(ApplicationHighAvailabilityService)来保障应用的高可用,本文总结了一份AHAS限流实践指南,如果你的系统有被恶意用户攻击的风险,或者系统中某个应用出现异常可能

4种典型限流实践保障应用高可用|云效工程师指北

大家好,我叫黄博文,花名延枚,目前负责云效旗下产品Flow流水线的设计和开发。在微服务架构下,服务越来越多,服务之间的调用也会越来越复杂。如何保障服务的高可用性就成为了一个挑战。之前我参与过的某个产品就曾出过故障,原因是某个API调用突然间增加了数十倍,导致服务负载过高,影响了用户使用。如果当时能够有一种机制能快速对这个异常的API进行限流或熔断,就能避免服务陷入不稳定的状况。云效自身使用阿里云AHAS(ApplicationHighAvailabilityService)来保障应用的高可用,本文总结了一份AHAS限流实践指南,如果你的系统有被恶意用户攻击的风险,或者系统中某个应用出现异常可能

微服务架构 | 5.2 基于 Sentinel 的服务限流及熔断

目录前言1.Sentinel基础知识1.1Sentinel的特性1.2Sentinel的组成1.3Sentinel控制台上的9个功能1.4Sentinel工作原理1.5Sentinel源码分析2.安装并运行Sentinel控制台2.1安装包安装Sentinel控制台2.1.1下载Sentinel2.1.2使用命令启动Sentinel控制台2.1.3访问Sentinel控制台2.2源码部署Sentinel控制台2.2.1拉取源码2.2.2启动Sentinel控制台3.SpringCloudNacos集成Sentinel3.1引入pom.xml依赖文件3.2修改bootstrap.yml配置文件3

微服务架构 | 5.2 基于 Sentinel 的服务限流及熔断

目录前言1.Sentinel基础知识1.1Sentinel的特性1.2Sentinel的组成1.3Sentinel控制台上的9个功能1.4Sentinel工作原理1.5Sentinel源码分析2.安装并运行Sentinel控制台2.1安装包安装Sentinel控制台2.1.1下载Sentinel2.1.2使用命令启动Sentinel控制台2.1.3访问Sentinel控制台2.2源码部署Sentinel控制台2.2.1拉取源码2.2.2启动Sentinel控制台3.SpringCloudNacos集成Sentinel3.1引入pom.xml依赖文件3.2修改bootstrap.yml配置文件3

ASP.NET Core中使用固定窗口限流

算法原理固定窗口算法又称计数器算法,是一种简单的限流算法。在单位时间内设定一个阈值和一个计数值,每收到一个请求则计数值加一,如果计数值超过阈值则触发限流,如果达不到则请求正常处理,进入下一个单位时间后,计数值清零,重新累计。如上图所示,时间单位是1秒,阈值是3。第1秒3个请求,不会触发限流;第2秒1个请求,不会触发限流;第3秒4个请求,这一秒的前3个请求正常处理,第4个请求触发限流,会被拒绝处理。后续第4秒、第5秒不会触发限流,所有请求正常处理。算法实现这里讲两种实现方法:进程内即内存固定窗口算法、基于Redis的固定窗口算法。进程内即内存固定窗口算法使用字典,Key是限流目标,Value包括

ASP.NET Core中使用固定窗口限流

算法原理固定窗口算法又称计数器算法,是一种简单的限流算法。在单位时间内设定一个阈值和一个计数值,每收到一个请求则计数值加一,如果计数值超过阈值则触发限流,如果达不到则请求正常处理,进入下一个单位时间后,计数值清零,重新累计。如上图所示,时间单位是1秒,阈值是3。第1秒3个请求,不会触发限流;第2秒1个请求,不会触发限流;第3秒4个请求,这一秒的前3个请求正常处理,第4个请求触发限流,会被拒绝处理。后续第4秒、第5秒不会触发限流,所有请求正常处理。算法实现这里讲两种实现方法:进程内即内存固定窗口算法、基于Redis的固定窗口算法。进程内即内存固定窗口算法使用字典,Key是限流目标,Value包括

ASP.NET Core中使用滑动窗口限流

滑动窗口算法用于应对请求在时间周期中分布不均匀的情况,能够更精确的应对流量变化,比较著名的应用场景就是TCP协议的流量控制,不过今天要说的是服务限流场景中的应用。算法原理这里假设业务需要每秒钟限流100次,先来看固定窗口算法的两个问题:漏检如下图所示,单看第1秒和第2秒,其请求次数都没有超过100,所以使用固定窗口算法时不会触发限流。但是第1秒的后500ms的请求数加上第2秒的前500毫秒的请求数就超过了100,这时候可能会给系统带来伤害,使用固定窗口算法时不能检测到这种情况。太刚针对漏检的问题,你可能会说,可以把时间窗口设置为500ms,把限流阈值设置为50。那么来看下图,除了第2个计数周期

ASP.NET Core中使用滑动窗口限流

滑动窗口算法用于应对请求在时间周期中分布不均匀的情况,能够更精确的应对流量变化,比较著名的应用场景就是TCP协议的流量控制,不过今天要说的是服务限流场景中的应用。算法原理这里假设业务需要每秒钟限流100次,先来看固定窗口算法的两个问题:漏检如下图所示,单看第1秒和第2秒,其请求次数都没有超过100,所以使用固定窗口算法时不会触发限流。但是第1秒的后500ms的请求数加上第2秒的前500毫秒的请求数就超过了100,这时候可能会给系统带来伤害,使用固定窗口算法时不能检测到这种情况。太刚针对漏检的问题,你可能会说,可以把时间窗口设置为500ms,把限流阈值设置为50。那么来看下图,除了第2个计数周期

ASP.NET Core中使用漏桶算法限流

漏桶算法是限流的四大主流算法之一,其应用场景各种资料中介绍的不多,一般都是说应用在网络流量控制中。这里举两个例子:1、目前家庭上网都会限制一个固定的带宽,比如100M、200M等,一栋楼有很多的用户,那么运营商怎么保证某些用户没有使用过多的带宽,从而影响到别人呢?这时就可以使用漏桶算法,限制每个用户访问网络的最大带宽,当然实际会比这复杂很多。2、有一个祖传接口,当时写的时候没有任何保护措施,现在访问量稍微大点就会崩溃,但是代码谁也改不动。这时候也可以用漏桶算法,把这个接口封装一下,将外部请求通过漏桶算法进行整流,再转发给这个接口,此时访问频率不会超过阈值,接口就不会崩溃了。算法原理说了这么多,