微信扫一扫
分享到朋友圈

OpenResty 完全开发指南:构建百万级别并发的 Web 应用 | 极客时间

作者:InfoQ 来源:InfoQ 公众号
分享到:

05-28

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

△扫描二维码试读或订阅

1 我与 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 学习路径图

2 我是如何讲解 OpenResty 的?

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

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

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

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

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

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

3 学习的重点在哪里?

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

  • 同步非阻塞的编程模式

  • 不同阶段的作用LuaJIT 和 Lua 的不同之处

  • OpenResty API 和周边库

  • 协程和 cosocket

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

  • 火焰图和周边工具链

  • 性能优化

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

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

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

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

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

△扫描二维码试读或订阅

5 限时订阅福利
  1. 限时优惠 ¥68,原价 ¥129。

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

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

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

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

阅读40162
开发 
举报0
关注InfoQ微信号:infoqchina

用微信扫描二维码即可关注
声明

1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。

评论
更多

文章来自于公众号:

InfoQ

微信号:infoqchina

邮箱qunxueyuan#163.com(将#换成@)
微信编辑器
免责声明
www.weixinyidu.com   免责声明
版权声明:本站收录微信公众号和微信文章内容全部来自于网络,仅供个人学习、研究或者欣赏使用。版权归原作者所有。禁止一切商业用途。其中内容并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现头条易读网站上有侵犯您的知识产权的内容,请与我们联系,我们会及时修改或删除。
本站声明:本站与腾讯微信、微信公众平台无任何关联,非腾讯微信官方网站。