你用的 Web 服务器已经过时,是时候上手灭霸版 Nginx 了!

作者 | 温铭

对服务端工程师来说,如果你的工作中涉及到 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

说了这么多 OpenResty 的特点,我是谁?又是怎样跟它结缘的呢?

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

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

初识 OpenResty 是 2012 年,那会儿我正为一个新的系统做技术选型,作为一个 Pythoner,我 不喜欢 Nginx C 模块的艰涩,但还想享受它的高性能 ——鱼与熊掌都想兼得,怎么办呢?

经过一番搜寻,我读到一篇介绍 OpenResty 的文章,那感觉真是如获至宝。然而,兴奋只持续了很短的时间,我发现市面上并没有太多资料可供参考,只能摸索前行,踩了数不清的坑,才感觉自己真正拿下了 OpenResty。

后来,一个偶然的机会,我发现 GitHub 不仅可以开源代码,还有书籍!我一下子就被点燃了,当晚就列出了 《OpenResty 最佳实践》 的目录,并开始”鼓动“周围的工程师加入。

我们从未宣传过这个开源项目,但它逐渐成为了 OpenResty 入门者的最佳伙伴。

然而,在加入 OpenResty Inc. 后,我才意识到,写出正确的 OpenResty 代码和写出高性能的优质 OpenResty 代码之间,还差了十万八千里。

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

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

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

所以,我与极客时间合作了这个专栏,目的很明确,就是让你轻松快速地入门 OpenResty ,建立起完整的知识体系,进而真正掌握这款开发利器。

△我总结的 OpenResty 学习路径图

我是如何讲解 OpenResty 的?

实践出真知,这句话用在互联网技术的学习上很恰当。在专栏中,我将秉承 “从实战中来,到实战中去” 的原则讲解。

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

同时,我还会在专栏文章中 穿插多个视频课程 ,内容取自 真实开源项目的功能点和 PR 。通过视频,你会更加直观地看到,刚学到的知识点是如何在实际中应用的。

专栏最后的 实战部分 ,是我们的真实“战场”:我会带你一起, 用 OpenResty 从零搭建一个微服务 API 网关

根据我们在社区中的统计,接近一半的 OpenResty 使用者,都把 OpenResty 用在 API 网关的开发上,Kong 和 orange 是 OpenResty 领域中最流行的两个开源网关项目。如果你想 独立搭建一个更简单、更高性能的 API 网关 ,这部分内容不容错过。

从实际的开源项目中学习,再到实际的开源项目中去实战,将实战融入完整的知识体系,这就是我的教学理念,相信你一定会有所收获。

学习的重点在哪里?

学习要会抓重点,才能构建出脉络清晰的知识体系。根据我的实战经验,想要学好 OpenResty,你需要理解下面几个重点,在专栏中我也会着重讲解:

  • 同步非阻塞的编程模式 ;

  • 不同阶段的作用 ;

  • LuaJIT 和 Lua 的不同之处 ;

  • OpenResty API 和周边库 ;

  • 协程和 cosocket;

  • 单元测试框架和性能测试工具;

  • 火焰图和周边工具链;

  • 性能优化

学习这个专栏需要什么基础?

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

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

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

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

△扫描二维码试读或订阅

限时订阅福利

  • 限时优惠 ¥68 ,原价 ¥129。

  • 分享海报,邀请好友订阅即可获 ¥24 返现,多邀多得,上不封顶,APP 内立即提现。

  • 订阅专栏 后,可以获得作者亲自整理的高清版 《OpenResty 学习路径图》 和开源书 《OpenResty 最佳实践》 ,获取方式:公众号后台回复 利器

妇联 4 首映票价的零头,就能上手 满钻灭霸 Web 服务器 ,这话不止是说说而已。

点击「 阅读原文 」免费试读或订阅。