Lua+Nginx+Redis实现灰度测试和防刷限流

前言

了解到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高性能的特性来缓解业务服务器的压力。

Lua+Nginx+Redis实现灰度测试和防刷限流_第1张图片

代码实现与解析

准备两个接口

在这里我用java和golang分别做了一个hello world,运行在8080、8081端口上。java作为默认版本,golang作为测试版本。如下

@

你可能感兴趣的:(架构,lua,nginx,redis)