是时候上手灭霸版Nginx了

共 2608字,需浏览 6分钟

 ·

2021-11-20 06:53

如果你是个服务端工程师,且工作中涉及 Nginx、高性能、高并发、动态控制、性能测试、分析等,那么,不论你使用什么开发语言和平台,OpenResty 都是不可多得的高性能开发利器。

但我发现,有不少人没接触过 OpenResty,作为一个兼具开发效率和性能的服务端开发平台,OpenResty 并不像其他开发语言一样从零开始搭建,而是基于成熟的开源组件—— Nginx 和 LuaJIT。

其核心是基于 Nginx 的一个 C 模块(lua-nginx-module),这个模块将 LuaJIT 嵌入到 Nginx 服务器中,并对外提供一套完整的 Lua API,透明地支持非阻塞 I/O,提供了轻量级线程、定时器等高级抽象。

围绕这个模块,OpenResty 构建了一套完备的测试框架、调试技术和由 Lua 实现的周边功能库。

你可以用 Lua 进行字符串和数值运算、查询数据库、发送 HTTP 请求、执行定时任务、调用外部命令等,还可以用 FFI 的方式调用外部 C 函数。

这基本上满足了服务端开发所需要的全部功能,所以,OpenResty 的适用范围早已超出了反向代理和负载均衡。

这就意味着,掌握了 OpenResty,就能同时拥有脚本语言的开发效率和迭代速度,以及Nginx C 模块的高并发和高性能优势

通过丰富的 lua-resty 库,OpenResty 逐渐摆脱了 Nginx 的影子,形成了自己的生态体系,在 API 网关、软 WAF 等领域被广泛使用。

据我了解,OpenResty 现在是已经是全球排名第五的 Web 服务器了,我们常用的 12306 的余票查询功能、京东的商品详情页,这些高流量的背后,都是 OpenResty 在默默地提供服务。

秒杀+口令「OpenResty」
售价 ¥129,立省 ¥40
到手只要 ¥89

说到这里,小咖为你推荐一个人——温铭。

他是 OpenResty 软件基金会主席,《OpenResty 最佳实践》的作者,也是前 360 开源技术委员会委员。

他在互联网安全公司有 10 多年的工作经验,之前一直从事高性能服务端的开发和架构,负责开发过云查杀、反钓鱼和企业安全产品。

有一次,哥们在为新系统做技术选型时,偶然了解到了 OpenResty,那会儿他还是个 Pythoner,不喜欢 Nginx C 模块的艰涩,还想享受它的高性能。

鱼与熊掌都想兼得, 怎么办呢?OpenResty 满足了他的需求

但是,目前 OpenResty 学习资料非常少,官方只提供了 API 文档,并没有入门和进阶的文档,网上找的资料也不够系统。

可以说,大部分的 OpenResty 使用者都是摸着石头过河,过程相当痛苦(他自己就是其中之一)。

所以,他在极客时间开了个课专门讲 OpenResty,目的很明确:帮你快速入门,建立 OpenResty 完整知识体系,进而真正掌握这款开发利器。

像他自己说的那样:写出正确的 OpenResty 代码和写出高性能的优质 OpenResty 代码之间,相差十万八千里。

而跨越这个巨大鸿沟的零件,就散落在 OpenResty 开源项目的源码、文档、issue、PR、幻灯片、邮件列表中,需要你把它们串联起来,形成一个完整的学习路径和知识图谱。

多说无益,可以瞅瞅他总结的 OpenResty 学习路径图,内容出自他的专栏《OpenResty 快速入门与实战》

△ 订阅专栏即可获取「高清知识图谱」

结合目录,我大致梳理了一下,如果用一句话概括这个专栏,我觉得是:“从实战中来,到实战中去”

专栏中的不少代码,都取自开源 OpenResty 的测试案例和实际的开源项目让你在入门之初,就了解真实的使用场景。

文章中还穿插了多个视频,内容取自真实开源项目的功能点和 PR。通过视频,可以更加直观地看到,刚学到的知识点是怎样在实际中应用的。

最后的实战部分,看着也挺带劲,哥们会带你用 OpenResty 从零搭建一个微服务 API 网关,如果你想独立搭建一个更简单、更高性能的 API 网关,这部分内容可别错过。

从实际的开源项目中学习,再到实际的开源项目中去实战,将实战融入完整的知识体系,这逻辑没毛病,要是学完没有收获,直接来找我。

另外,我看哥们还挺走心,专门列了几个学习 OpenResty 的重点,会在专栏里着重讲解那种,有好几个特别「戳」我,这回跟着好好补补课:

  • 同步非阻塞的编程模式
  • 不同阶段的作用
  • LuaJIT 和 Lua 的不同之处
  • OpenResty API 和周边库
  • 协程和 cosocket
  • 单元测试框架和性能测试工具
  • 火焰图和周边工具链
  • 性能优化

关于学习这个课需要什么基础,直接引用温铭原话,他比我总结得好:

OpenResty 是在 Nginx 和 LuaJIT 的基础上搭建的,所以 Nginx 和 LuaJIT 的基础知识还是需要的。

但你只要了解很少的 Nginx 知识,就可以学习 OpenResty 了。

少到什么程度呢?涉及到的 Nginx 的知识,我只用一节课就介绍完了。所以,即使你从没接触过 Nginx 也没关系。

要知道,OpenResty 并不等同于 Nginx,OpenResty 这个项目存在的目的之一,就是让你感知不到 Nginx 的存在。

从编程语言的角度看,Lua 是一种很容易理解的语言,你只要能看懂它的代码,并不需要独立写出复杂的 Lua 代码,就可以完成专栏的学习了,我会用少数几节课带你入门 Lua,达到 OpenResty 的使用水准。

哥们写的有点长,我总结就一句:放心学,学得会,能用着

△扫我的海报试读或订阅
秒杀+口令「OpenResty」
售价 ¥129,立省 ¥40
到手只要 ¥89

说了半天,是时候上目录了,想要干货往下看:

     
《沙丘》首映票价的零头,就能上手 Web 服务,这买卖稳赚不亏。

👇扫码无法购买的同学点击「阅读原文」👇
温铭带你一起,让 OpenResty 飞一会儿。
浏览 2
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报