【nginx】nginx介绍-集成lua

本文介绍了如何将lua集成到nginx中,通过openresty简化服务架构,减少了转发层,提高了性能。lua作为胶水语言,能与nginx紧密结合,实现快速开发。文章详细阐述了lua的优势、集成过程及注意事项,包括lua与nginx的事件响应机制,以及在实际业务中如何维护代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

背景介绍

在项目开发中,之前经手的一个服务是在redis中存放着生成好的数据,客户端通过具体的key来获取redis中的具体数据。在之前的开发中是采用了nginx+wsgi+python的架构方案,实现项目并推送到测试环境。
但是随着时间过去,慢慢对项目进行思考,发现其实这种实现方式也有一定的弊端。因为,对于服务来说没有复杂的逻辑,nginx接受到请求转发到后台python服务;然后python服务拿到具体请求到redis中取出数据然后返回给客户端调用。整个流程其实比较简单而且明确,没有必要在nginx和redis中间再添加一层python的服务,所以在思考这种架构的实现方案是不是可以在优化一点。

nginx与lua

后来经过简单的搜索nginx+redis发现一些nginx+lua+openresty相关的关键词。接下来就是对openresty开始调研。查看相关文档发现,openresty是一个集成了nginx核心模块与各种第三方模块的一个项目集。如果使用openresty,那么就避免了额外各种安装第三方包,它全部都继承到它的安装包里面。这对于懒人来说绝对是一个不错的选择。

lua介绍

lua是一个脚本语言,也有另外一个称呼-胶水语言。它是一个非常小的、可以和其他语言非常容易耦合在一起的语言。通过lua自己的特性,再加上他依附的语言,在一个服务里利用两种语言的特性,功能肯定不是一般的强大。看到一些牛B的游戏中都有在使用lua做一种胶水型的功能型语言。
不过通过简单使用,发现lua对字符串的处理不够强大,因为它是直接使用C库,它对字符串的处理也只是C库提供的接口,没有对接口进行额外的丰富和补充。在很多场景下,需要自己实现一些常用的接口,比如split等。

集成lua与ngxin

因为看到lua是一种胶水类型的语言,那么lua是否可以直接耦合在nginx中?答案是非常肯定的。lua可以直接运行在nginx中,做一些逻辑的处理、日志的控制。那么我们就可以考虑使用nginx+lua来开发一个web服务来满足需求,去完成其他服务端语言不能完成的便利和快速开发。
除了上述说的遍历性之外,nginx+lua还会带来什么优势:
1、减少一层转发 ,使用其他服务语言来开发服务,肯定会使用一种协议在nginx和服务端直接进行通信。比如cgi、fcig、wsgi等。如果使用lua,因为lua是直接运行在nginx中,就么有必要再额外做一次nginx转发。
2、基于事件的响应,因为lua是直接运行nginx的运行时环境,那么lua就继承了nginx的所有特性。在一般情况下,nginx都是基于事件的提供服务,select或者epoll。在性能上肯定会灰常给力的。
基于以上原因开搞nginx+lua。因为是懒人直接采用了整个安装openresty的策略,当然你也可以单独安装nginx,再安装lua,然后nginx_lua_module。安装了openresty之后,开始写简单的测试,其实在openresty的github上也

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值