前言
了解到lua脚本和nginx的搭配之后,一直想知道这东西能用来做点什么。于是动手实践了一下... 下面开始正文
前期准备
获取openresty:openresty官网(其实就是一个通过lua扩展的nginx服务器) http://openresty.org/cn/getting-started.html
获取redis:redis中文网站 http://www.redis.cn/
功能概述
1 灰度测试
用户访问某个地址,根据他的特征值来给他返回不同的页面,实现灰度发布功能。在这个demo中我们使用用户ip
2 防刷限流
在这个例子中,如果用户在5秒内超过三次访问,就禁止该用户继续访问。通过redis的expire实现
为什么要用openresty做
画一张图帮助大家理解。这样做的好处在于,将流量挡在业务之外,利用nginx、lua、redis高性能的特性来缓解业务服务器的压力。
代码实现与解析
准备两个接口
在这里我用java和golang分别做了一个hello world,运行在8080、8081端口上。java作为默认版本,golang作为测试版本。如下
@