前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统高峰限流

系统高峰限流

作者头像
dys
发布2018-04-03 15:40:15
9830
发布2018-04-03 15:40:15
举报
文章被收录于专栏:性能与架构性能与架构

限流是通过限制访问数量,防止系统压力过大而崩溃,是保障系统稳定性的一道屏障 例如网站计划做促销活动

活动前会预估访问量,然后进行压力测试和预演,如果现在的性能无法满足,那么就需要通过优化或者扩容来达成目标

活动开始后,如果实际情况超过了预估值,通常会使用服务降级等方式来降低压力,如果还是不行,就要限流了,放弃一部分用户的访问,来保证系统整体的稳定 具体如何限流呢?之前看过淘宝工程师龙隆介绍的策略,思路很简洁,因为我的系统访问量比较平稳,没有做限流的处理,就没做相关测试,下面把龙隆的方法整理出来,来给自己和有需要的朋友开扩思路

限流思路

先定义上限数量,当系统接收到请求时,判断现有的请求数量是否已经超过限值,如果是,直接返回,不处理此请求,如果否,处理此请求,并给此请求计数,当这个请求处理完成后,释放此请求的计数 用java实现很简单,java中有Semaphore信号量的概念 示例代码 //定义信号量 Semaphore semaphore = new Semaphore(100); //当请求数量超出时,直接返回 if(semaphore.getQueueLength() > 0){ return; } try{

//申请获得信号量资源 semaphore.acquire(); ... //处理业务逻辑 } catch(...){ ... } finally{ //释放 semaphore.release(); } 上面初始化时定义了100个资源数量,每来一个请求就计数,当同时处理的请求数量达到了100,那么第101个请求就进入等待队列,不再进行处理了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档