Dog -Piling:缓存失效遇上大量访问
来源:互联网 发布:支付宝能解绑淘宝号码 编辑:程序博客网 时间:2024/05/19 05:29
Dog-Piling是指当缓存中的数据失效时,遇到大量的请求,此时大量的请求涌向数据库,导则数据库超负荷。(数据获取的时间大于服务器需要响应的用户的时间)
Dog-Piling与cache stampede和thundering herd同义。
一种避免dog-piling效应的旧解决方案:
首先定义以下变量:
my $STALE_REFRESH = 1;
my $STALE_CREATED = 2;
my $EXPIRY = 300;
my $GENERATION_TIME = 30;
sub memcGet{
my($this,$key,$db_get_method,$db_method_args,$expiry,$generation_time) = @_;
$expiry = $EXPIRY unless defined $expiry;
$generation_time = $GENERATION unless defined $generation_time;
return $this->{memc}->get($key) unless $expiry;
my $full_expiry = $expiry + $generation_time*2;
my $stale_key = "$key:stale";
my $value = $this->{memc}->get($key);
my $stale_value = $this->{memc}->get($stale_key);
unless(defined $stale_value){
$this->{memc}-set($stale_key,$STALE_REFRESH,$generation_time);
print "SETTING stale_value";
$value = undef;
}
unless(defined $value){
$value = $db_get_method->($this,$db_method_args);
$this->{memc}->set($key,$value,$full_expiry);
$this->{memc}->set($stale_key,$STALE_VALUE,$expiry);
}
return $value;
}
下面是一些详细介绍Dog-Piling的文章。
Strategy: Break Up The Memcache Dog Pile
http://highscalability.com/blog/2009/8/7/strategy-break-up-the-memcache-dog-pile.html
http://taoyh163.blog.163.com/blog/static/19580356200812564641602/
Dog-pile Effect and How to Avoid it with Ruby on Rails memcache-client Patch:
http://kovyrin.net/2008/03/10/dog-pile-effect-and-how-to-avoid-it-with-ruby-on-rails-memcache-client-patch/
- Dog -Piling:缓存失效遇上大量访问
- ReentrantReadWriteLock详解及应用:缓存和大量数据并发访问
- memcached缓存失效时的高并发访问问题解决
- memcached缓存失效时的高并发访问问题解决
- memcached缓存失效时的高并发访问问题解决
- memcached缓存失效时的高并发访问问题解决
- 缓存失效
- Android 缓存大量 bitmap
- dog
- DoG
- dog
- dog
- memcached缓存失效时间
- memcache 缓存失效问题
- memcached缓存失效
- Redis 缓存失效机制
- redis 缓存失效原理
- Redis 缓存失效机制
- ssh2整合时乱码问题
- 吉哥系列故事——恨7不成妻
- java.util.NoSuchElementException错误 解决办法
- EaselJS 简介
- python 学习笔记(10)重构与文件处理
- Dog -Piling:缓存失效遇上大量访问
- ZOJ3705Applications(浙江省第十届省赛)
- Web3.0概述
- 智力1
- JAVA线程池Executor的简单使用
- 关于widthStep造成的问题
- C++动态创建二维数组
- Reverse a positive number
- 微软SQLHelper.cs类 中文版 笔记