OpenResty从入门到实战-温铭-极客时间-返现24元

极客时间专栏 2019-05-23 9:41:10 阅读(4634) 评论(0)

极客时间出品的《OpenResty从入门到实战》由温铭所作,温铭是OpenResty软件基金会主席,《OpenResty 最佳实践》作者,本门课系统掌握一款高性能开发利器。

OpenResty从入门到实战 封面图

订阅形式

限时 ¥68原价 ¥129 。已有1713 人购买,栏以音频和文字形式进行, 共50讲 。可在极客时间APP/小程序/网站上观看。

OpenResty从入门到实战 宣传图

用我的邀请购买,还会额外返现24元。购买的朋友请加我微信号 dismissmewp ,备注:返现

专栏简介

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

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 呢?在 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!

OpenResty从入门到实战专栏作者

温铭,OpenResty 软件基金会主席,《OpenResty 最佳实践》开源书的发起人和作者,曾任某开源商业公司合伙人,前 360 开源技术委员会委员。他在互联网安全公司工作了 10 年,负责开发过云查杀、反钓鱼和企业安全产品。

OpenResty从入门到实战 作者温铭

在这个专栏里,温铭将带你轻松快速入门,并给你描绘 OpenResty 的全貌,建立完整的知识体系;同时,他会串联整个专栏来实战应用,带你从零开始搭建一个 API 网关。为了让你接触更真实的使用场景,温铭还在专栏里特别增加了多节视频课程,进行开源项目的源码分析和实战演练,帮你真正掌握OpenResty这款开发利器。

《OpenResty从入门到实战》专栏模块

专栏共50期,根据 OpenResty 使用者的现状分析,内容分为5大模块。

模块一,入门篇。OpenResty 由 NGINX 和 LuaJIT 两部分构成,这一模块会介绍它们的基础知识,以及其中经常遇到的缺陷与陷阱;同时会带你浏览下OpenResty 仓库的近 70 个项目。虽然OpenResty 经常被叫做 ngx-lua,但 lua-nginx-module 仅仅是冰山一角,你需要清晰的全局观来学习 OpenResty 的“真面目”,不能“身在此山中”。

模块二,API篇。这是 OpenResty 对外暴露的 Lua 接口,也是你编写 OpenResty 代码最常用到的部分。这一模块会把这些指令和 API 分门别类逐步介绍给你,并引导你思考一些易忽略的关键点,比如,这些 API 为什么这么设计?为什么要增加一些看上去和 NGINX 无关的功能?希望能让你知其然,更知其所以然。

模块三,测试篇。这可能是本专栏最“高冷”的部分,不少 OpenResty 的代码贡献者都在编写测试案例时遇到过困难。<code>test::nginx<\/code> 功能异常强大,但也有很高的学习门槛,就连详细文档也不足以填平它。除此之外,这一部分还会带你讨论服务端性能测试,作为 OpenResty 中的最佳实践,在你测试 Java、Go、Node.js 等其他语言开发的系统时,它一样适用。

模块四,性能优化篇。OpenResty 的性能优化技巧,一直是开发者最关注的问题。这个模块会提供 OpenResty 的编码指南,让你从一开始写代码时,就能规避性能问题;并且会手把手地教你,如何使用火焰图这种科学、可量化的工具来定位性能问题,而不是依靠猜测。

模块五,实战篇。OpenResty 社区中有一个很明显的趋势,就是越来越多的开发者把 OpenResty 用在 API 网关的开发中,这是一个非常明智和务实的选择。这个模块会带你把前面所学的知识串联起来,搭建出一个 API 网关的雏形。你可以在此基础上,直接添加自己的模块来实现业务需求,不用再重新造轮子。

《OpenResty从入门到实战》专栏详细目录

入门篇

  1. 初探OpenResty的三大特性
  2. 如何写出你的“hello world”?
  3. 揪出隐藏在背后的那些子项目
  4. 如何管理第三方包?从包管理工具luarocks和opm说起
  5. 【视频】opm项目导读
  6.  OpenResty中用到的NGINX知识
  7. 帯你快速上手Lua
  8. LuaJIT分支和标准Lua有什么不同?
  9. 为什么lua-resty-core性能更高些?
  10. JIT编译器的死穴:为什么要避免使用NYI?
  11. 剖析Lua睢一的数据结构table和metatable特性
  12. 高手秘诀:识别Lua的独有概念和坑
  13. 【视频】实战:基于FFI实现的lua-resty-lrucache
  14. 答疑解惑(一)

API篇

  1. OpenResty和别的开发平台有什么不同?
  2. 秒杀大多数开发问题的两个利器:文档和测试案例
  3. 为什么能成为更好的Web服务器?动态处理请求和响应是关键
  4.  worker「间的通信法宝:最重要的数据结构之shared diet
  5. 离开cosocket,你还想访问MySQL ?
  6. 为什么能超越Web服务器?特权进程和定时器是关键
  7. 带你玩转时间、正则表达式等常用API
  8. 【视频】从一个安全漏洞说起,探寻API性能和安全的平衡
  9. 【视频】导读lua-resty-requests:优秀的lua-resty-*是如何编写的?
  10. 实战:处理四层流量,实现Memcached Server
  11. 答疑解惑(二)

测试篇

  1. 代码贡献者的拦路虎:OpenResty内置测试框架test::nginx
  2. test::nginx包罗万象的测试模式
  3.  test::xnginx还可以这样用?
  4. 最容易失准的性能测试?你需要压测工具界的“悍马” wrk
  5. 答疑解惑(三)

性能优化篇

  1. 性能下降10倍的真凶:阻塞函数
  2. 让人又恨又爱的字符串操作
  3. 性能提升10倍的秘诀:必须用好table
  4. 首次公开的OpenResty编码指南
  5. 【视频】实际项目中的性能优化:ingress-nginx中的几个PR解读
  6. 动态调试的利器:如何用SystemTap生成火焰图?
  7. systemtap-toolkit和stapxx:如何用数据搞定“疑难杂症”?
  8. 【视频】巧用wrk和火焰图,科学定位性能瓶颈
  9. 揭秘高性能的关键:shared dict缓存和lru缓存
  10. 缓存与风暴并存,谁说缓存风暴不可避免?
  11. lua-resty-*封装,让你远离多级缓存之痛
  12. 如何应对突发流量?从漏桶和令牌桶说起
  13. 灵活实现动态限流限速,其实没有那么难
  14.  OpenResty优于NGINX的杀手锏:动态加载和动态上游
  15. 不得不提的能力外延:OpenResty常用第三方库
  16. 答疑解惑(四)

实战篇

  1. 微服务API网关搭建三步曲之一
  2. 微服务API网关搭建三步曲之二
  3. 微服务API网关搭建三步曲之三
  4. 答疑解惑(五)

 

猿人学banner宣传图

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***

说点什么吧...