1基本介绍
1.1Lua简介
Lua是轻量级的脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua主要有三种用户,即适用嵌入到某个程序中的Lua用户,适用Lua解释器程序的用户以及同时使用C和Lua的用户。
同时Lua作为脚本语言,主要有以下几个特性:
(1)可拓展性:Lua可拓展性非常卓越,不仅仅是一门编程语言,而已是一种用于构建特定领域语言的工具包。
(2)简易性:Lua是一种简单、小巧的语言。
(3)高效性:Lua具有非常高效的实现,性能评估显示Lua是脚本(解释型)语言中运行效率最高的语言。
(4)可移植性:Lua具有跨平台特性,可以运行在任何平台上。
Lua主要的运用场景:
(1)游戏以及游戏插件
(2)嵌入式程序
(3)大型程序中的部分模块
1.2Nginx简介
Nginx是一款高性能的Http和反向代理服务器。Nginx能够选择高效的epoll(Linux2.6内核)、kqueue(FreeBSD)、eventport(Solaris10)作为网络I/O模型,在高连接并发情况下,能够支持50000的并发连接数,而占用的内存、CPU等资源却很低,运行非常稳定。
Nginx主要有以下特性:
(1)支持高并发多连接,主要是使用epoll和kqueue作为网络I/O模型,减少了处理请求带来的CPU消耗。
图1.1 使用epoll、kqueue、select等网络模型性能测试对比图
(2)内存消耗少,Nginx单进程的内存消耗在15M左右,通过10个Nginx进程处理30000并发连接的情况下,内存占用量仅为150M,并且运行速度很快。
(3)成本低廉,Nginx采用2-clauseBSD-like协议,可以免费使用,并且可以在源代码基础上进行二次开发。
(4)配置文件非常简单。
(5)支持Rewrite重写规则,能够根据域名、URL不同,将Http请求分到不同的后端服务器群组。
(6)内置健康检查功能,在使用Nginx Proxy后端的某台服务器宕机的情况下不影响前端访问。
(7)节省带宽,支持GZIP压缩。
(8)稳定性高,支持热部署。
图1.2 Nginx与Apache、Lighttpd的对比
2Lua整合Nginx
Lua整合Nginx主要是通过ngx_lua_module实现的,它把 Lua 解析器内嵌到 Nginx,用来解析并执行Lua 语言编写的网页后台脚本。主要特性如下:
(1)支持Windows和Linux平台。
(2)支持高并发高性能。
(3)HTML网页中内嵌LUA脚本代码,类似于PHP。
(4)支持非阻塞的数据库操作,目前只支持MYSQL。
(5)支持异步的文件IO操作。
(6)支持非阻塞的SOCKETIO操作。