1. set_by_lua
  2. rewrite_by_lua
  3. access_by_lua
  4. content_by_lua
  5. header_filter_by_lua
  6. body_filter_by_lua
  7. log_by_lua
  • lua-resty-lock模块

  为了解决高并发下缓存失效后引发的雪崩效应,可以使用lua-resty-lock(异步非阻塞锁)来解决这个问题。lua-resty-lock是一个基于Nginx共享内存(ngx.shared.DICT)的非阻塞锁(基于Nginx的时间事件实现),说它是非阻塞的是因为它不会阻塞Nginx的worker进程,当某个key(请求)获取到该锁后,后续试图对该key再一次获取锁时都会『阻塞』在这里,但不会阻塞其它的key。当第一个获取锁的key将获取到的数据更新到缓存后,后续的key就不会再回源后端应用了,从而可以起到保护后端应用的作用。

       详细的api文档请参考:https://github.com/openresty/lua-resty-lock#for-cache-locks

posted on 2019-06-04 09:58  yiyezhou2012  阅读(119)  评论(0编辑  收藏  举报