Py学习  »  NGINX

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

高效开发运维 • 4 年前 • 512 次点击  
作者 | 温铭

对服务端工程师来说,如果你的工作中涉及到 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 服务器,这话不止是说说而已。

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34629
 
512 次点击