OpenResty

OpenResty是Nginx与Lua的结合,提供强大的Web服务扩展能力。它允许开发者在Nginx上使用Lua进行灵活高效的扩展开发,弥补了Nginx原生扩展能力不足的问题。本文介绍了OpenResty的构成、作用、主要功能点,如init_by_lua、access_by_lua等,并提及了其在服务发现、限流、鉴权等场景的应用。
摘要由CSDN通过智能技术生成

最近笔者写了两篇在OpenResty上进行插件开发的文章,但可能忽略了一个关键点,即读者也许不知道OpenResty是什么,能做什么,因此对于怎么做并不感兴趣。本文尝试从是什么、能做什么、怎么做三个角度对OpenResty进行更详细的说明,争取让读者理解并对OpenResty有兴趣。

Nginx & Lua

Nginx

OpenResty最精简的描述是等于Nginx + Lua。

Nginx是HTTP反向代理杰出的代表、最佳实践,主要可完成如下工作:

  • 静态资源代理

  • 请求转发,按一定路由规则转发Downstream请求到Upstream,Upstream即backend server

PS: 笔者曾有疑问为何请求从client -> nginx -> backend server,却将backend server称为Upstream,因为HTTP资源存在服务器,Upstream描述的是资源流向而非数据流向

  • 负载均衡,一个Upstream可以对应多个backend server,单个请求具体转发哪个backend server,可以设置一些策略如:round robin、ip hash、url hash等

  • 限流,按照一定策略限制client调用频率

  • 缓存,使Nginx可以“复用”backend server的返回数据

  • 日志,访问日志以及错误日志,访问日志可以提供一些较有价值的内容如:host、clientIp、请求耗时等

Nginx虽强大优秀,但随技术更新迭代所体现出美中不足的点是扩展能力不灵活,需要用C/C++编写插件模块,这对当下开发者不友好,门槛高且开发周期长。

OpenResty的出现完美解决了Nginx上述缺点,赋予开发者在Nginx上使用Lua开发扩展的能力,扩展实现灵活高效且Nginx的高性能也继续得以保持。

Lua

Lua是葡萄牙语月亮的意思,总结一下主要有如下特点:

  • 小众,不是OpenResty,压根不知道有这么一门语言

  • 可嵌入脚本语言,胶水语言,专注辅助主角C/C++,不想做主角

  • 游戏领域用的多,与C/C++交互API友好,方便实现热更

  • 解释器体积小(不到200k),笔者不懂解释器,看相关文章都会提到,应该很牛逼

通过学习与实践Lua基础语法、数据类型、模块机制这些内容,整体感觉较简单,稍高阶的内容有模式匹配、协程、元表元方法、C API等。在OpenRe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值