# 限流算法
推荐微信公众号:【矿洞程序员】文章由高端社区fameLink联合创始人陶德与我及其他社区大佬联合发表。关注【矿洞程序员】可获得大咖陶德的私人微信。
限流是解决高并发大流量的一种方案,至少是可以保证应用的可用性。通常有以下两种限流方案:- 漏桶算法
- 令牌桶算法## 漏桶算法![漏桶算法,来自网络.png](https://i.loli.net/2017/08/11/598c905caa8cb.png)漏桶算法非常简单,就是将流量放入桶中并按照一定的速率流出。如果流量过大时候并不会提高流出效率,而溢出的流量也只能是抛弃掉了。这种算法很简单,但也非常粗暴,无法应对突发的大流量。
这时可以考虑令牌桶算法。## 令牌桶算法
![令牌桶算法-来自网络.gif](https://i.loli.net/2017/08/11/598c91f2a33af.gif)令牌桶算法是按照恒定的速率向桶中放入令牌,每当请求经过时则消耗一个或多个令牌。当桶中的令牌为 0 时,请求则会被阻塞。> note:
令牌桶算法支持先消费后付款,比如一个请求可以获取多个甚至全部的令牌,但是需要后面的请求付费。也就是说后面的请求需要等到桶中的令牌补齐之后才能继续获取。实例:
```java@Overridepublic BaseResponse<UserResVO> getUserByFeignBatch(@RequestBody UserReqVO userReqVO) {//调用远程服务OrderNoReqVO vo = new OrderNoReqVO() ;vo.setReqNo(userReqVO.getReqNo());RateLimiter limiter = RateLimiter.create(2.0) ;//批量调用for (int i = 0 ;i< 10 ; i++){double acquire = limiter.acquire();logger.debug("获取令牌成功!,消耗=" + acquire);BaseResponse<OrderNoResVO> orderNo = orderServiceClient.getOrderNo(vo);logger.debug("远程返回:"+JSON.toJSONString(orderNo));}UserRes userRes = new UserRes() ;userRes.setUserId(123);userRes.setUserName("张三");userRes.setReqNo(userReqVO.getReqNo());userRes.setCode(StatusEnum.SUCCESS.getCode());userRes.setMessage("成功");return userRes ;}
```1. [单 JVM 限流](http://crossoverjie.top/2017/08/11/sbc4/)
2. [分布式限流](distributed/Distributed-Limit.md)

欢迎关注。

限流是解决高并发大流量的一种方案,至少是可以保证应用的可用性相关推荐

  1. php大流量网站解决,PHP 大型网站 高并发大流量解决方案

    标签:htm   指定   配置   热备   耗资源   负载均衡集群   session管理   redis   mod 网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验 ...

  2. 阿里为啥值4万亿?看它如何应对亿级高并发大流量?如何保障高可用和稳定性,就知道了!...

    作者:丁浪,目前在创业公司担任高级技术架构师.曾就职于阿里巴巴大文娱和蚂蚁金服.具有丰富的稳定性保障,全链路性能优化的经验.架构师社区特邀嘉宾! 阅读本文,你将会收获: 高并发.大流量场景的常见问题和 ...

  3. 阿里如何应对亿级高并发大流量?如何保障高可用和稳定性!

    作者:丁浪,目前在创业公司担任高级技术架构师.曾就职于阿里巴巴大文娱和蚂蚁金服.具有丰富的稳定性保障,全链路性能优化的经验.架构师社区特邀嘉宾! 阅读本文,你将会收获: 高并发.大流量场景的常见问题和 ...

  4. 高并发大流量专题---8、动态语言的并发处理

    高并发大流量专题---8.动态语言的并发处理 一.总结 一句话总结: 和本科毕业论文连起来了:基于消息中间件Rocket MQ的研究:用于并发处理的消息队列 1.什么是进程.线程.协程? 进程(Pro ...

  5. 高并发大流量专题---5、CDN加速

    高并发大流量专题---5.CDN加速 一.总结 一句话总结: CDN就是多整几台节点服务器,选距离用户最近的服务器来给用户服务,实现的话可以用阿里云.腾讯云他们提供的功能,简单方便,妈妈再也不用担心我 ...

  6. 高并发大流量专题---6、独立图片服务器的部署

    高并发大流量专题---6.独立图片服务器的部署 一.总结 一句话总结: 独立图片服务器还是非常有必要的,可以很大程度的降低主服务器的io以及提升用户访问速度 1.独立图片服务器 独立的必要性? 分担W ...

  7. 高并发大流量专题---10、MySQL数据库层的优化

    高并发大流量专题---10.MySQL数据库层的优化 一.总结 一句话总结: mysql先考虑做分布式缓存,过了缓存后就做mysql数据库层面的优化 1.mysql数据库层的优化的前面一层是什么? 数 ...

  8. 服务器系统怎么做高并发,QPS 高并发 如何设计一个支撑高并发大流量的系统?...

    QPS 高并发 如何设计一个支撑高并发大流量的系统? 高并发架构相关概念 什么是并发? 并发是指并发的访问,也就是某个时间点,有多少个访问同时到来: 通常如果一个系统的日PV在千万以上,有可能是一个高 ...

  9. 高并发大流量专题---3、前端优化(减少HTTP请求次数)

    高并发大流量专题---3.前端优化(减少HTTP请求次数) 一.总结 一句话总结: 图片地图:使用<map><area></area></map>标签. ...

最新文章

  1. 「树莓派+1万块乐高」打造乐高分类器,树莓派官方转发,网友:我想借来用两天...
  2. 医学数据挖掘学习项目:他克莫司
  3. 程序最小化后释放了很多的内存的原因
  4. 神经网络的输出层有哪些_神经网络算法—总结篇
  5. 【Python】PAT-1007-素数对猜想
  6. c++设计模式编程基础
  7. python测试用例管理模块_Python的单元测试模块如何检测测试用例?
  8. 排序算法:冒泡和快排 摘自网络
  9. go语言mysql操作_使用Go语言操作MySQL数据库的思路与步骤
  10. 6-7Pytorch搭建cifar10训练脚本(上)
  11. django-rest-framework二--权限(转载)
  12. 小孩儿学计算机可以学些什么,基础知识
  13. 【云片网】使用云片网发送注册短信验证码
  14. 软件开发中常见名词解释
  15. P处理的中有大量判断条件是的sql写法
  16. 机械工程专业与c语言的联系,新工科背景下的机械专业C语言课程改革
  17. 基于java的药店管理系统
  18. java qq托盘 消息提醒_如何仿QQ实现托盘闪动消息提醒
  19. 智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口
  20. RoCE Overlay

热门文章

  1. Ant Design Icon图标使用
  2. 项目开发——课程表查询APP
  3. 按钮按下时立体感效果
  4. 以核心素养为导向的计算机教学方式,核心素养导向的课堂教学-感悟
  5. 多项logistic回归系数解释_深入解读Logistic回归结果(一):回归系数,OR
  6. 苹果将于4月20日举行产品发布会
  7. hp batterie batterie charing port
  8. Android--剪贴板
  9. 跨境电商运营:亚马逊运营如何分析店铺数据
  10. JavaEE知识体系