zoukankan      html  css  js  c++  java
  • 令牌桶 VS 漏桶

    漏桶算法和令牌桶算法的区别, 说得清楚吗? 其实两个算法并不难理解,当然有区别,但是感觉区别没那么大, 看网上的一下说明,感觉是误导他人。

    引用网上说明:

    漏桶算法和令牌桶算法的区别

    **漏桶算法的出水速度是恒定的,**那么意味着如果瞬时大流量的话,将有大部分请求被丢弃掉(也就是所谓的溢出)。漏桶算法通常可以用于限制访问外部接口的流量,保护其他人系统,比如我们请求银行接口,通常要限制并发数。
     
    令牌桶算法生成令牌的速度是恒定的,而请求去拿令牌是没有速度限制的。这意味,面对瞬时大流量,该算法可以在短时间内请求拿到大量令牌,可以处理瞬时流量,而且拿令牌的过程并不是消耗很大的事情。令牌桶算法通常可以用于限制被访问的流量,保护自身系统。
     
    其实两者还是非常的相似的, 尽管内部原理差不多,但是其实 还是差不多, 上面的表述有误: 
    那么意味着如果瞬时大流量的话,将有大部分请求被丢弃掉(也就是所谓的溢出) —— 如果漏桶已经是空的, 可能根本不会溢出,自然不会大部分被丢弃,
     面对瞬时大流量,该算法可以在短时间内请求拿到大量令牌,可以处理瞬时流量 —— 同样,如果此时令牌已经所剩无几,令牌桶算法也无法短时间拿到大量令牌, 它同样需要等待!
     
    本质上来讲, 漏桶算法 是流出速度固定,从而在桶未空的时候,容量稳步减少, 可用空间增加(也就是可以获取的、可流入的量 增加);而令牌桶算法是流入速度固定,也是从而在桶未满的时候,容量稳步增加(也就使得可以获取的、可流出的量 增加);
     
    所以本质上来讲, 都是使得一个操作的量增加,使得另外的相反的操作得以进行。只要桶的 现有容量足够大, 它就可以获得足够的 突发!! 所以,真正意义来说, 没有区别。本质都是一个 匀速的操作,限制反向操作的平均速度。
     
     参考
    https://blog.csdn.net/a718515028/article/details/108363499


    版权声明
    本文原创发表于 博客园,作者为 阿K .     本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    欢迎关注本人微信公众号:觉醒的码农,或者扫码进群:

  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/14491480.html
Copyright © 2011-2022 走看看