OpenResty 从入门到实战
温铭
OpenResty 软件基金会第一任主席,Apache APISIX 项目 VP
20903 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 52 讲
结束语 (1讲)
OpenResty 从入门到实战
15
15
1.0x
00:00/08:43
登录|注册

开篇词 | OpenResty,为你打开高性能开发的大门

讲述:温铭大小:7.96M时长:08:43
实战部分搭建微服务 API 网关
穿插多个视频课程
代码源自开源 OpenResty 的测试案例和实际开源项目
专栏形式偏重于实战
实践出真知
Lua 是一种容易理解的语言
OpenResty 并不等同于 NGINX
NGINX 和 LuaJIT 的基础知识
缺乏系统化学习资料
加入 OpenResty Inc.
维护技术博客
发现 Python 社区介绍 OpenResty 的文章
开始接触 OpenResty
构建了一套完备的测试框架、调试技术以及由 Lua 实现的周边功能库
提供轻量级线程、定时器等高级抽象
支持非阻塞 I/O
提供完整的 Lua API
LuaJIT 嵌入到 NGINX 服务器中
基于 NGINX 实现
兼具开发效率和性能
学以致用
技术日新月异
开篇问题
从实战中来,到实战中去
学习这个专栏需要什么基础
我与 OpenResty 的渊源
OpenResty 的特点
为什么学习 OpenResty
OpenResty

该思维导图由 AI 生成,仅供参考

你好,我是温铭,OpenResty 软件基金会主席,曾任某开源商业公司合伙人,前 360 开源技术委员会委员,在互联网安全公司工作了 10 年,负责开发过云查杀、反钓鱼和企业安全产品。接下来的几个月,我会带着你系统地学习一下 OpenResty。

为什么学习 OpenResty

为什么学习 OpenResty,这是开篇的第一个问题。我们正身处技术日新月异的时代,经常听到周围的工程师开玩笑说,学不动了。人的精力有限,选择学习某个技术都会有机会成本。最好的选择,是从你工作中涉及到的部分出发,学以致用。
对于服务端工程师来说,如果你的工作中涉及到 NGINX、高性能、高并发、动态控制、性能测试和分析等,那么不管开发语言和平台是什么,这门 OpenResty 课程都会让你有所裨益。如果你之前没有接触过 OpenResty,我确信它会给你打开另外一个服务端世界的大门。
OpenResty 是一个兼具开发效率和性能的服务端开发平台,虽然它基于 NGINX 实现,但其适用范围,早已远远超出反向代理和负载均衡
它的核心是基于 NGINX 的一个 C 模块(lua-nginx-module),该模块将 LuaJIT 嵌入到 NGINX 服务器中,并对外提供一套完整的 Lua API,透明地支持非阻塞 I/O,提供了轻量级线程、定时器等高级抽象。同时,围绕这个模块,OpenResty 构建了一套完备的测试框架、调试技术以及由 Lua 实现的周边功能库。
你可以用 Lua 语言来进行字符串和数值运算、查询数据库、发送 HTTP 请求、执行定时任务、调用外部命令等,还可以用 FFI 的方式调用外部 C 函数。这基本上可以满足服务端开发需要的所有功能。
掌握好了 OpenResty,你就可以同时拥有脚本语言的开发效率和迭代速度,以及 NGINX C 模块的高并发和高性能优势。

我与 OpenResty 的渊源

说了这么多 OpenResty 的特点,我又是怎样与它结缘的呢?其实,我是在 2012 年开始接触 OpenResty 的,那会儿我正在为一个新的系统做技术选型,作为一个 Python 的忠实粉丝,我不喜欢 NGINX C 模块的艰涩,却希望得到它的高性能,鱼与熊掌想兼得。该怎么办呢?
经过一番搜寻后,我发现了 Python 社区“大妈” ZQ 的一篇介绍 OpenResty 的文章,可以说是如获至宝。不过,兴奋只持续了很短的时间,因为之后的我,就像是无头苍蝇一样,开始在黑暗中摸索着缓慢前行。踩了数不清的坑后,我才真正拿下了 OpenResty。
和很多工程师不同的是,我喜欢写文章,在大学期间就一直维护着自己的技术博客。有一天晚上加班时,我发现身边一位工程师在用 GitHub 记录 ELK 的使用心得,并发布到了 GitBook 上。原来 GitHub 还可以开源书籍,而不只是代码!
我一下子就被点燃了,当晚就列出了《OpenResty 最佳实践》的目录,并开始“鼓动”周围的工程师加入。我们从未宣传过这个开源项目,但它慢慢变成了 OpenResty 入门者的最佳伙伴。
不过,在加入 OpenResty Inc. 后,我才逐渐发现,能写出正确的 OpenResty 代码并避免常见的坑,和写出高性能、优质的 OpenResty 代码之间,还相差了十万八千里。而跨越这个巨大鸿沟的法宝零件,散落在 OpenResty 开源项目的源码、文档、issue、PR、幻灯片、邮件列表中,需要你把它们串联成真正的法宝——一个完整的学习体系和知识图谱
那如何才能体系化学习 OpenResty 呢?在 OpenResty 的技术交流群里面,很多工程师都曾经有过这样的困惑。
事实上,OpenResty 的学习资料还比较少,官方只有 API 文档,并没有提供入门和进阶的文档,而网上能找到的资料也不够系统。可以说,绝大部分的 OpenResty 使用者都是在摸着石头过河,过程很痛苦。
因此,我与极客时间合作了这个专栏,目的很明确,就是让你轻松快速地入门,并给你描绘出 OpenResty 的全貌,帮你建立知识体系,带你真正掌握 OpenResty 这款开发利器。

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

OpenResty 是在 NGINX 和 LuaJIT 的基础上搭建的,所以我们肯定需要 NGINX 和 LuaJIT 的基础知识。
但你只需要很少的 NGINX 知识,就足够开始 OpenResty 之旅了。少到什么程度呢?涉及到的 NGINX 知识,我只用一节课就介绍完了。即使你完全没有接触过 NGINX,也可以跟着课程的节奏,逐步学习 OpenResty。
要知道,OpenResty 并不等同于 NGINX,OpenResty 这个项目的目的之一,就是让你感知不到 NGINX 的存在。
而从编程语言来看,Lua 是一种很容易理解的语言,你只要能够看懂它的代码,就可以完成本专栏的学习,并不需要能够独立写出复杂的 Lua 代码。同样的,我也会花少数几节课的时间,带你入门 Lua,达到 OpenResty 的使用水准。

从实战中来,到实战中去

实践出真知,这句话用在互联网技术的学习上很恰当。
和理论偏多的书籍不同,专栏的形式本身更偏重于实战。专栏中出现的不少代码,都源自开源 OpenResty 的测试案例,以及实际的开源项目。引用这些实际案例,就是希望你在入门之初,就能接触到最优秀的代码,了解到最真实的使用场景。
同时,我还会在专栏文章中,穿插多个视频课程。视频课的内容,都取自真实开源项目的功能点和 PR。通过视频,你会亲眼看到,刚刚学到的知识是如何在实际中使用的。
专栏最后的实战部分,则是我们的真实“战场”。我会带你一起,用 OpenResty 从零搭建一个微服务 API 网关。根据我们在社区中的统计,接近一半的 OpenResty 使用者,都把 OpenResty 用在 API 网关的开发上,Kong 和 orange 则是 OpenResty 领域中最流行的两个开源网关项目。你想自己从头搭建一个更简单、更高性能的 API 网关吗?一起来吧。
从实际的开源项目中学习,再到实际的开源项目中去实战,将实战融入完整的知识体系,这便是我的教学理念,希望你喜欢这种方式。
万尺高楼平地起,接下来,我会和你一起来逐步掌握 OpenResty,Enjoy!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

OpenResty,为你打开高性能开发的大门。本文由OpenResty软件基金会主席温铭撰写,介绍了OpenResty的特点、作者与OpenResty的渊源、学习OpenResty的基础要求以及实战中的应用。OpenResty是一个兼具开发效率和性能的服务端开发平台,基于NGINX实现,适用范围远超反向代理和负载均衡。通过Lua语言进行字符串和数值运算、查询数据库、发送HTTP请求等,满足服务端开发需求。作者介绍了自己与OpenResty的结缘经历,以及在技术交流群中工程师对OpenResty学习的困惑。学习OpenResty需要基础的NGINX和LuaJIT知识,但只需很少的NGINX知识即可开始学习OpenResty。专栏形式更偏重于实战,引用实际案例和视频课程,最后将实战融入完整的知识体系,带领读者从零搭建一个微服务API网关。文章内容丰富,深入浅出,适合想要快速了解OpenResty的读者。

2019-05-2220人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenResty 从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(50)

  • 最新
  • 精选
  • NEVER SETTLE
    目前负责广告引擎系统的API网关,就是用Openresty搭建的,Lua语言开发起来很方便,让人欲罢不能的感觉,再加上Nginx高性能和高并发,后端负载均衡,感觉两者结合就是绝配。1、一个值得赞的是,上线时候直接reload一下就可以,根本不会出现停服那种情况。2、现在用Lua写代码习惯了,偶尔用下C++,感觉写起来太费劲了,比如json序列化与反序列化,Lua直接cjson.decode和cjson.encode,结果用C++我就不多说了,尤其json结构复杂,嵌套很深那种,真的有点费劲。3、共享字典sharedict用起来真的很方便,所有worker进程共享,自带锁机制,不用担心竞争的情况。4、Lua虽然用起来方便,但不注意真的会踩很多坑,之前有段时间流量同期没有什么增长,但是CPU利用率涨了10%,后来我们reload一下,结果就正常了。过段时间,问题复现了,我用perf工具查了下,发现一个字符串操作的函数占用率很高,后来查了下,是用字符串连接符..调用的,后来结合当时上线的代码,发现添加了许多业务日志,而日志里面字段都是用连接符..连接的,后来改成concat了,目前问题没发生过了。5、请问温老师,openresty现在用可靠的protobuf库吗,之前对接外部模块,api是protobuf协议,当时需求急,没有咋调研,我直接用最粗爆方式,用ffi方式调用C++,Lua给C++传json,C++json解码之后,把参数配成pb,返给Lua,反之亦然,感觉有点麻烦,请温铭老师指点迷津。

    作者回复: Lua 性能相关的坑不少,后面会专门介绍。 据我说知,Lua 中 protobuf 的库都是基于 FFI 来做的,OpenResty 并没有专门的这方面的库。

    2019-05-22
    30
  • 咆哮
    用了openresty两年,陆陆续续给公司做了两个版本的waf、api网关,希望学习提升自己

    作者回复: waf 和 api 网关都是 OpenResty 擅长的方向。技术选型不错:)

    2019-05-22
    7
  • 业余草
    OpenResty 借助 Lua 语言,插上翅膀。OpenResty 为什么不借助其他脚本语言呢?比如 Shell 等。我通篇文章看下来一直在说 OpenResty 的优势,但是没有比较,只能脑补。很空洞。就我一个有这样的感觉吗?

    作者回复: OpenResty 的第一个版本是把 perl 嵌入了 NGINX,但性能很差。NGINX 官方把 js 嵌入进来,也有一些开源项目把 php 嵌入 NGINX。

    2019-05-27
    6
  • 冯思鸣
    现在的KONG API 网关就是基于openresty+ lua去开发的吧?基于KONG做扩展是否会更方便,毕竟它提供了很多现成的扩展。

    作者回复: 是的,Kong 就是基于 OpenResty 的。基于 Kong 做插件也是 OK 的,如果你的需求是做网关的话。

    2019-05-29
    3
  • 吃草🐴~
    说来惭愧,我是从买这门课起开始接触 OpenResty 的,哈哈。目前工作中还用不到这个,是兴趣驱动学习。希望学完课程后,能运用到工作中~😃

    作者回复: 可以在新项目中试试,或者替代现有的 NGINX 服务也是不错的。

    2019-05-28
    2
  • geraltlaush
    老师,我们有个音视频后台服务没有过载保护,可以使用openrestry来开发网关ma

    作者回复: OpenResty 很适合限流限速的场景,可以针对不同的请求,来动态控制。后面也会有章节讲到。

    2019-05-27
    2
  • 冰河时代
    老师,最近在学习Spring Cloud,用Zuul做服务网关和OpenResty该怎么选择,或者他们的应用场景有什么不同吗?

    作者回复: Zuul 我不懂,现在更流行的是 Kong。你可以找找对比他们两个的文章。

    2019-05-27
    1
  • Mr. Ren
    期待后续课程,听了下感觉挺好,实战很重要

    作者回复: 学以致用最有效果

    2019-05-26
    1
  • xfan
    工作中刚刚用到kong,还不错

    作者回复: Kong 是基于 OpenResty 最成功的项目了

    2019-05-23
    1
  • 普罗米修斯
    今年搞区块链项目用到了……老师带我超神

    作者回复: 区块链是用在哪里呢?API 网关?

    2019-05-23
    1
收起评论
大纲
固定大纲
为什么学习 OpenResty
我与 OpenResty 的渊源
学习这个专栏需要什么基础?
从实战中来,到实战中去
显示
设置
留言
50
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部