应用软件>程序员必备知识(三)
结合上一篇文章,我们选好了一款产品做我们的外网服务器,那么接下来,如果想依据成熟技术构建一个属于自己的应用服务器,可以使用OpenResty开源项目,这篇文章主要介绍OpenResty(开源技术)及其相关。
OpenResty概念
OpenResty(也称为ngx_openresty),是一个基于Nginx与Lua的高性能的Web应用服务器,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项,用于方便地搭建能够处理高并发、扩展性极高的动态Web应用、Web服务和动态网关。
OpenResty通过汇聚各种设计精良的Nginx模块,从而将Nginx有效地变成为一个强大的通用的Web应用平台,这样,Web开发人员和系统工程师可以使用Lua脚本语言调动Nginx支持的各种C以及Lua模块,快速构建出足以胜任10K乃至1000K以上单机并发连接的高性能Web应用系统。
OpenResty理念
- OpenResty致力于将你的服务器端应用完全运行于Nginx服务器中,充分利用Nginx的事件模型来进行非阻塞I/O通信。不仅仅是和HTTP客户端间的网络通信是非阻塞的,与MySQL、PostgreSQL、Memcached、以及Redis等众多远方后端之间的网络通信也是非阻塞的。
OpenResty可信度
- 因为OpenResty软件包的维护者也是其中打包的许多Nginx模块的作者,所以OpenResty可以确保所包含的所有组件可以可靠地协同工作。
Lua与LuaJIT
- Lua 是一个小巧的脚本语言。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
- Lua 脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为脚本语言,也可以作为普通的文件,代替XML,INI等文件格式,并且更容易理解和维护。
- 一个完整的Lua 解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的,这一切都决定了Lua是作为嵌入式脚本的最佳选择。
- Lua 并没有提供强大的库,这是由它的定位决定的。所以lua不适合作为开发独立应用程序的语言。Lua有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
- LuaJIT 即采用C语言写的Lua代码的解释器。
LuaJIT is a Just-In-Time Compiler for the lua programming language.
。 - LuaJIT 可以像Lua那样嵌入到一个应用程序里。
OpenResty与Lua、LuaJIT
- Nginx将LuaJIT VM嵌入其中,实现了OpenResty这个高性能服务端解决方案。
本文部分参考链接,借此感谢先行的前辈们
https://www.oschina.net/p/openresty
如有不妥之处,欢迎批评指正,感谢开源中国做出的贡献,本人开源中国链接如下: