首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

电商专题I:集群环境下业务限流

2013-07-04 
电商课题I:集群环境下业务限流@郑昀汇总?创建日期:20120925关键词索引:令牌桶算法,漏桶算法背景:防注册机、

电商课题I:集群环境下业务限流

@郑昀汇总?

创建日期:20120925
关键词索引:令牌桶算法,漏桶算法
背景:防注册机、秒杀器或扫号等常见电商流量过滤技术,一般具有如下要求:1) 高性能。算法简单高效,能对HTTP Requests进行实时在线处理。2) 分类错误率低。尤其是尽量保证不误杀正常顾客访问。3) 鲁棒性强。由于双方攻防的对抗性很强,所以算法必须适应各种类型的攻击情形(包括DDoS攻击)。?课题1:对网站某一个URL/表单提交/Ajax请求的访问进行实时检测,找出过于频繁请求的ip,对这些ip的访问频率进行限制。?课题2:对网站开放平台访问,对某一个开放接口的调用,有频次约束,即针对单一App Key不得超过每小时150次调用。?翻译一下:郑昀认为,我们希望限制住的是,在用M度量的任何时间周期内,某一个动作(action)的发生次数N。?英文关键词:rate limiterrate limitingthrottle limiter?要控制的是 Average Rate :  电商专题I:集群环境下业务限流????????????????????????????????????????????????????????????????????
     实现:Rate limiting with memcached代码实现:https://github.com/simonw/ratelimitcache/blob/master/ratelimitcache.py 它明确提出了防字典攻击防扫号的目的。既可限制住ip,也可限制住其他字段如 username 。?
var RateLimiter = require('limiter').RateLimiter;// Allow 150 requests per hour (the Twitter search limit). Also understands// 'second', 'minute', 'day', or a number of millisecondsvar limiter = new RateLimiter(150, 'hour');// Throttle requestslimiter.removeTokens(1, function(err, remainingRequests) {  // err will only be set if we request more than the maximum number of  // requests we set in the constructor  // remainingRequests tells us how many additional requests could be sent  // right this moment  callMyRequestSendingFunction(...);});
var BURST_RATE = 1024 * 1024 * 150; // 150KB/sec burst ratevar FILL_RATE = 1024 * 1024 * 50; // 50KB/sec sustained ratevar TokenBucket = require('limiter').TokenBucket;// We could also pass a parent token bucket in as the last parameter to// create a hierarchical token bucketvar bucket = new TokenBucket(BURST_RATE, FILL_RATE, 'second', null);bucket.removeTokens(myData.byteLength, function() {  sendMyData(myData);});
What’s a good rate limiting algorithm?Best way to implement request throttling in ASP.NET MVC?

热点排行