网络网站建设公司,wordpress 报价,30分钟网站建设教程视频,o2o的四种营销模式优质博文#xff1a;IT-BLOG-CN
一、限流的作用和意义
限流是对高并发访问进行限制#xff0c;限速的过程。通过限流来限制资源#xff0c;可以提高系统的稳定性和可靠性#xff0c;控制系统的负载#xff0c;削峰填谷#xff0c;保证服务质量。
服务限流后的常见处理…优质博文IT-BLOG-CN
一、限流的作用和意义
限流是对高并发访问进行限制限速的过程。通过限流来限制资源可以提高系统的稳定性和可靠性控制系统的负载削峰填谷保证服务质量。
服务限流后的常见处理方式 【1】拒绝服务 【2】排队或等待 【3】服务降级当服务器压力剧增的情况下根据当前业务情况及流量对一些非核心服务和页面有策略的降级以此释放服务器资源以保证核心任务的正常运行
二、限流的主要方式
限流可以分为两大类 【1】单机限流计数器、互动窗口、漏桶算法、令牌桶算法
计数器 取固定大小的时间窗口并在每个窗口时间内限制请求数量。只需要记录一个计数器并在每个时间窗口结束时将其重置为零。每当请求进入系统时我们都会将计数器加一并检查它是否超过了限制的阈值。这种方式的缺点是窗口是固定的在两个窗口边界会有流量超限问题。
滑动窗口 滑动窗口的基本思想是在固定窗口基础之上将一个窗口分为若干个等分的小窗口每个小窗口对应不同的时间点拥有独立的计数器。当请求的时间点大于当前窗口的最大时间点时则将窗口向前平移一个小窗口。如果请求数量超过了小窗口的限制的阈值则决绝该请求。时间区间精度越高所需空间容量越大。每一次小窗口就判断是否超过1分钟的阈值取当前小窗口的前后五分钟的请求量例如下图虚线框部分。提高了限流的频率和准确性。
漏桶算法 可粗略的认为就是注水漏水的过程往桶中以任意流速流入水以一定速率流出水当水超过桶容量则触发限流因为出水速率是不变的所以保证了资源的请求速率。漏桶算法是一个强制限制请求速率的方式有两个缺点 ● a)无法应对正常的突发流量实际上突发一波请求流量是正常现象。漏桶算法中的漏桶容易被突发流量打满导致后续的正常请求被限流。 ● b)无法有效利用资源严格限制请求量无法充分利用资源。
令牌桶算法 令牌桶算法是对漏桶算法的改进能在限制调用的平均速率的同时还允许一定程度的突发调用。 限流过程 ● a)系统以恒定的速率产生令牌然后将令牌放入令牌桶中 ● b)令牌桶有容量限制 ● c)每次请求需要从令牌桶中获取令牌有令牌则提供法务无令牌则拒绝服务 令牌桶算法一定程度上可以防止突发流量以每分钟100请求量为例如果前一分钟使用了90个令牌则当前就可以使用110个令牌容量来处理突发请求。作为漏桶算法的改进令牌桶算法在限流场景下被广泛使用。 Guava为我们提供了很好的基于令牌桶算法的流控工具RateLimiter可以支持突发流量也可以支持预热等多种功能简单好用。 【2】分布式限流Redis令牌桶、发票服务器Sentinel
三、单机限流 VS 分布式限流
【1】单机限流在单机上运行性能好状态稳定。但如果分布式系统使用单纯的单机限流开启HPA后流量会处于半失控状态如果扩容整个集群限流就会变大缩容整个集群限流就会变小。 【2】已有的分布式限流方案需要每次/每批请求都需要请求“阈值管理者”单点增加了服务端的网络开销和不稳定因素“阈值管理者”的稳定性也是影响结果的一个重要因素。 【3】如果能结合单机限流和分布式限流的优点就是我们这次需要的分布式限流框架。
四、聚合查询限流场景
场景 请求量大且调用方多10000渠道平均QPS5000
为什么需要限流 【1】请求流量不稳定存在突发流量爬虫、活动 【2】资源有限部分底层资源不能抗衡突发流量第三方接口部分资源收费 【3】业务要求业务合同原因甲方产品有限需要限制调用方请求数
为什么不能使用公司接口框架自带的限流功能 因为相同调用方拥有多个销售渠道存在不同销售渠道流量限制不同的场景框架自带服务ID和操作OP的限流维度不能满足需求。
核心主流程 需要保证响应速度和稳定性。
限流配置经常调整。
聚合层限流服务
限流功能主要基于RateLimiter高效可靠。由限流服务端更新推送限流资源配置监听客户端状态。这种方案结合了单机限流和分布式限流的优点。
以下面场景说明限流服务工作过程 【1】限流Clinet初始化 引入限流Client的应用启动时限流Client将初始化Client自动从限流服务端获取全量的单机限流参数根据不同资源名初始化不同的RateLimiter并存入缓存
【2】Client限流过程 限流Client初始化后业务服务端正常运行时限流Client以单机令牌桶限流的方式进行限流和限流服务端无交互减少不必要的调用和依赖
【3】修改限流配置 修改配置时限流服务端通过消息通知所有Client更新限流参数
【4】被限流的服务集群状态变更 业务服务端实例发生变更时扩缩容、拉入拉出等限流服务端监听注册中心实例变更消息并重新计算限流值通知限流Client更新限流
【5】Client定期同步配置 限流组件Client也会定期从限流服务端拉取最新的限流配置保证使用数据的新鲜度
功能
【1】支持多种资源名称配置维度例如渠道、子渠道等且可以自定义多种限流维度。 【2】支持将限流值配置至Group维度使不同Group使用不同的限流值。
优化点
目前组件的限流功能依赖于负载均衡需要优化在负载不均衡的情况。将结合其他限流方案进行优化。