黑名单
用云数据库 Memcache 版缓存网站的全部用户名单(黑名单+白名单),因为云数据库 Memcache 版存储价格低,可以采取空间换时间的策略,提高判断黑名单用户时的命中率,减轻数据库压力。
具体方法: 可以先将黑名单存入云数据库 Memcache 版,不在黑名单中的用户登录网站时,访问云数据库 Memcache 版未命中后会查询数据库中黑名单信息,此时查询结果也为空。随后将这个用户信息存为云数据库 Memcache 版的白名单用户,从而避免缓存击穿。
Key:Username Value:{Black/White, Other}
首页、头条缓存
对首页、新闻头条等更新相对不频繁的内容做缓存时,由于该类缓存的访问频率高但条目少,所以大量访问请求只会落到某几个 key 的读取上。在访问量非常大时,会造成响应时间延长甚至瘫痪。这类问题是无法通过扩展机器,负载均衡来解决的。
具体方法: 对高频访问的 key 建立副本,从而解决单一热点的高并发问题。
Key:Username1 Value:{Message}
Key:Username2 Value:{Message}
Key:Username3 Value:{Message}
接口访问频率控制
用来记录访问频率,限制高频访问的接口。
具体方法:通过使用云数据库 Memcache 版的自增函数
public int incr(string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]])将调用的接口名称、用户名、当前时间拼成 key,value 存访问次数,每次访问时调用 incr 进行自增,如未超过访问次数则允许访问该接口,超过访问次数则拒绝,从而实现对接口访问的频率控制。
Key:ApiName+User+Time Value: { count }
if (ocs.incr(key, 1, 1 , 10) > 100) {
Access Denied;
} else {
Pass;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。