1.NetCore Web服务器介绍
.Net Core有俩种web服务
(1)Kestrel服务器是默认跨平台HTTP服务器实现。Kestrel提供了最佳性能和内存利用率,但它没有HTTP.Sys中的某些高级功能。
(2)HTTP.sys服务器仅用于Windows的HTTP服务器,它是基于HTTP.sys核心驱动程序HTTP服务器API
http大致处理流程
因此,当有大批量的慢处理堆积在ThreadPool上时,后续所有的请求都会变慢,慢慢的导致整个站点不可用。(当有一个接口满时,会导致整个站点响应速度慢,并且会影响到整个站点不可用)
2.Web服务器质量(QoS)保障利器
简介
QoS的英文全称为"QUality of Service",中文名为"服务质量"。
QoS是网络安全的一种机制,是用来解决延迟和阻塞等问题的一种技术。
当网络过载或拥塞时,QoS能确保重要业务不受延迟或丢弃,同时保证网络高效运行。
当Web服务器请求过载或拥塞时,QoS能确保重要业务不受延迟或丢弃,所谓弃车保帅。
2.1降级
服务降级时当服务器压力剧增时,根据当前业务情况及流量对一些服务和页面有策略降级,以此释放服务器资源以保证核心任务的正常运行。
可以拒接服务,也可以延迟服务,也可以随机服务。
总体来讲,根据业务需求和服务器当前状况来采用不同的降级策略。
(1)自动降级
超时、失败次数、故障、限流
a.设置超时时间
b.不稳定的api调用次数达到一定数量进行降级
c.调用远程服务出现故障(dns、http服务错误状态码、网络故障、Rpc服务异常),直接降级
(2)人工降级
降级非要的任务
2.2限流
限流可以任务是服务降级的一种,限流就是限制系统的输入和输出流量以达到保护系统的目的。
一般来说系统的吞吐量(tps,qps)是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。
比如:延迟处理、拒绝处理、或者有部分拒绝处理等
2.3熔断
服务熔断是应对微服务雪崩效应的一种链路保护机制,类似股市、保险丝。
当下游服务因访问压力过大,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用,直接返回,快速释放资源。
如果目标服务情况好转则恢复调用。
熔断器三种状态:
(1)Close:熔断器最初是处于Close状态,所有请求会正常通过和执行,当检测错误到达一定阈值时,便转为Open状态
(2)Open:所有请求都会被拒绝,当到Reset time时便转为Half Open状态
(3)Half Open:尝试放行一部分请求到后端,一旦检测成功便回到Close状态
3.限流算法
限流常见的算法有四个:固定窗口计数器、滑动窗口计数器、漏桶算法、令牌桶算法
3.1固定窗口计数器算法
将某一个时间段当做固定窗口,在这个时间段每请求一次,计数器+1,当请求次数超过设定阈值时,
则将接下来的请求直接拒绝,不在往下走。当时间段结束后,计数器会被初始化,从0开始计算
固定窗口计数器限流算法无法保证限流速率,因而无法保证突然激增的流量
比如我们限制一个接口一分钟只能访问500次的话,在第15分钟前半分钟一个请求没有接收,
后半分钟接收了500个请求,第16分钟前半分钟接受到500个请求。
那么在15分钟后30秒和16分钟前30秒累计通过了1000个请求。有可能就会让服务器处理过载状态。
3.2滑动窗口计数器算法
滑动窗口计数器算法算是固定窗口计数器算法升级版。滑动窗口计数器算法把时间以一定比例分片。
例如我们的接口限流每分钟处理12个请求,我们把一分钟分为6个小窗口,
每6个相邻的小窗口请求数量之和不能超过12,超过第12个的请求被直接拒绝。
当滑动窗口划分的越多,限流处理越是平滑也越精确。但是当窗口设置的越多,占用内存也越大,也有可能会引发内存溢出。
3.3漏桶算法
我们可以把接受请求的动作比作成注水到桶中,我们处理请求的过程可以比喻为漏桶漏水。
我们往桶中以任意速率流入水,以一定速率流出水。当水超过桶流量则丢弃,因为桶容量是不变的,保证了整体的速率。
漏桶算法能强行限制数据的传输速率。假如业务要求能够限制数据的平均传输速率外,
还要求允许某种程度的突发传输。这时候漏桶算法可能就不合适了,令牌桶算法更为适合。
3.4令牌桶算法
令牌桶算法分为2个动作,动作1(固定速率往桶中存入令牌)、动作2(客户端如果想访问请求,先从桶中获取token)。
能获取到token的则可以继续往下执行,没有获取的则被拒绝。
令牌桶有一个初始值,桶内令牌初始数量。假如初始数量为500,每1分钟往桶放60个令牌。
它可以瞬间处理500个请求,接下来每分钟处理60个请求,超过60的则被拒绝。
4.总结
参考地址:https://github.com/DonetSchool/Core
https://www.bilibili.com/video/BV1t44y1r7U5?from=search&seid=2365333665537656204&spm_id_from=333.337.0.0