跳到主要内容

openresty三大特性

1.详尽的文档和测试用例

GitHub - openresty/openresty: High Performance Web Platform Based on Nginx and LuaJIT

自带的命令行工具 restydoc

/t目录下所有的测试案例

2.同步非阻塞

local res, err = query_mysql(sql)
local value, err = query_redis(key)

查询完mysql拿到结果后,才能继续查redis,这就是同步

如果不用等mysql返回,就能继续往下走去查询redis,那就是异步

阻塞,特指阻塞操作系统线程。假设查询mysql需要1s,在这一秒内,操作系统的资源(CPU)是空闲的并且等待返回,那就是阻塞,如果CPU可以去处理其他的请求,那就是非阻塞。

openresty里,上面的代码可以实现同步非阻塞。

3.动态

ngxin发生变动,需要修改配置文件,重新加载生效。

而openresty用lua来控制逻辑,通过lua-nginx-module模块中提供的Lua API,可以动态控制路由、上游、请求、响应等等,甚至可以在不重启openresty的情况,修改业务的处理逻辑,并不局限于openresty提供的lua api。

参考和学习:

OpenResty和Lua

GitHub - openresty/lua-resty-mysql

OpenResty最佳实践 -- a book