zoukankan      html  css  js  c++  java
  • 限流相关的概念

    漏桶和令牌桶

    漏桶主要目的是控制数据注入到网络中的速率,平滑网络上的突发流量.

    令牌桶原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌,则拒绝服务.

    漏桶由于速率恒定,不能应付突发rate.而令牌桶则可以在短时间应付突发rate.即短时间允许流量速率大于令牌生成速率.比如令牌产生速率为4/s,令牌桶上线为8,那第一秒没有请求,那第二秒就可以处理8个请求.这种允许突发的高峰的设计,更符合服务器的性能特性.毕竟平均最大qps和瞬间最大qps是不一样的.

    sliding window

    为了应对突发流量,在统计的时候,把时间分为更细个颗粒度,维护多个小时间段的计数器.从而避免突发流量.比如要求每分钟qps为100,如果用户在59分30秒的时候发送100个请求,又在0分30秒之前的时候又发100个请求,其实这时从59m30s到0m30s的时间内qps为200,这时候把统计的时间段分隔的更细,可以有效避免这种情况的发生.

    Hystrix有两种隔离级别Thread/Semaphore

    Thread提供一个线程池,一个请求使用一个线程,超过线程池大小的请求直接返回失败.

    Semaphore限制并发资源.请求有自己的线程,通过Semaphore count来控制并发量.

    Thread模式更消耗资源,高并发环境更适合用Semaphore.Semaphore模式是使用调用者的线程,也就是说没有完全隔离.Semaphore超时时,没办法停止.

  • 相关阅读:
    javaday19_List接口_Set接口
    01玩转数据结构_04_最基础的动态数据结构:链表
    10 拖拽的对话框_滚动条_放大镜_
    01玩转数据结构_03_栈和队列
    java小技巧
    01玩转数据结构_02_不要小瞧数组
    01玩转数据结构_01_课程介绍
    javaday18_ArrayList
    JZOJ.3777【NOI2015模拟8.17】最短路(shortest)
    JZOJ.5230【NOIP2017模拟8.5】队伍统计
  • 原文地址:https://www.cnblogs.com/saias/p/9254413.html
Copyright © 2011-2022 走看看