结束语 | 行百里者半九十

你好,我是温铭。

时光飞逝,转眼间,持续 4 个多月的 OpenResty 技术专栏就要结束了。在最后的结课时光,让我们暂时放下技术,聊一聊我自己创作专栏的感触和心得吧。

OpenResty 开源已有十几年的时间,它的同步非阻塞的编程理念、高性能的稳定表现,都是远超同时期其他开发语言和平台的。但 OpenResty 至今都不是一个能够深入业务层面、能被更多开发者掌握的技术。究其原因,首先和它的自身定位和长远规划有关系,这方面我们没有办法改变;另一方面,也和它在社区上的投入不足有很大关系,直到现在, OpenResty 也没有一个很好的入门指南和完整的学习书籍。

所以,尝试从学习资料方面来促进 OpenResty 的普及,便是我联系极客时间团队撰写专栏的初心。我希望能够通过这种形式,让更多的开发者可以入门,对 OpenResty 有完整的认识,并能够把 OpenResty 深入到业务代码的开发中去。

最开始时,我是想用视频课的形式来完成这个内容的,因为这样对我来说最节省时间。熟悉我的朋友都知道,我是一个台上 high 的人,最喜欢的就是脱稿,因为这样可以让大脑飞速地运转,冒出很多自己都没有想到的观点。

但考虑到内容的错误订正,读者的复习、查找、传播等因素,最后我还是改用了文字为主、视频为辅的这种新模式。现在来看,我很庆幸采用了这种模式,文字稿可以让我有机会去打磨文字内容和代码片段,不断做到更好。所以站在追求完美的角度来看,我还是更喜欢文字的形式。

回顾专栏的创作,个中滋味如人饮水。苦,那自然是苦的。录音基本都是在深夜睡觉前完成的,大部分文字稿也是晚上和出差途中挤时间写出来的,再加上今年自己出来在创业,杂事儿特别多,人也特别忙碌。

但苦后的回甘,却来得更长久。我终于有机会对自己多年来积累的 OpenResty 知识做了完整的回顾和总结,也通过大家热情的留言发现了不少自己知识的错漏。教学相长,是件快乐的事情。

知道如何去学,远比记住更重要

其实,在知识的积累方面,我是一个记性很差的人,学过的东西经常过两天就忘记了,所以我就有意地去写博客记录下来。有时候去翻看 OpenResty 和周边 lua-resty 的代码,我经常连自己操刀的功能,也忘得一干二净,只有 Git 的 commit 记录证明那是自己写的。

你看,就是记性这么差的一个人,但靠着良好的整理记录习惯,我却总是能够很快地掌握并上手使用新的技术,并且,在实际的使用中,得到进一步的巩固。

所以,我在这个专栏中反复地告诉你,文章中涉及到的知识点,你没有必要全部记下来。只要你的脑子里面有个大概的印象,在使用到的时候知道到哪里找答案,这就足够了。知道怎么去找答案,远比记住答案本身重要得多,正所谓授人以鱼,不如授人以渔。

对于 OpenResty 的学习也是一样。从文档和测试案例入手,你就能快速准确地明白 API 的使用;从尽可能复用和减少对象的创建入手,你就可以写出高性能的 Lua 代码;从测试驱动开发入手,你也可以写出像 OpenResty 一样稳定的系统。这些不同的思考角度就是根本,而各种技巧和方法,都是从它身上长出来的花朵和果实。

因此,在 OpenResty 专栏的内容设计上,我并没有尝试去覆盖广度,而是在各章节之间设计了一些埋点,然后通过简单示例的方式把它们串联起来,争取把一个典型的知识点讲透彻,让你很自然地对相似类型的问题触类旁通。如果本专栏能让你找到学习 OpenResty 的正确路径,那么我的目的也就达到了。

行百里者半九十

在专栏的最后,我想用“行百里者半九十”来做为结语,与你共勉。

这句话是什么意思呢?从字面上来看,如果你要走一百里路,那当你走完九十里的时候,其实只算完成了一半,因为最后的十里路才是最艰难的。

回到实际工作中,如果你学完了整个专栏,你会发现,OpenResty 并非十全十美,还存在有很多问题。如果只从功能数、稳定性和性能上来看,OpenResty 并不比 Envoy 差。但 Envoy 的发展速度和生态显然比 OpenResty 好太多:

  • Envoy 有接近 500 名贡献者,OpenResty 只有 70 多名贡献者;
  • Envoy 平均 2-3 个月发布一个版本,而 OpenResty 一年才发布一个版本,让社区望眼欲穿;
  • 另外,OpenResty 至今都不支持 TLS 双向认证,以及gRPC server、client 这些微服务体系中必备的功能。

所以,我一直担忧的是,对于 OpenResty 而言,在微服务和东西向流量这条路上,再不迎头赶上,就真的望尘莫及了。

对于你——这个专栏的读者来讲,花费 4 个多月的时间学习完所有的内容,其实也只是一个开始。把这些内容消化并运用起来,融入自己的知识体系中,才是那最关键的十里路。

对于我自己而言,这篇文章写完,就意味着交付了整个 OpenResty 技术专栏,但与你建立的联系才刚刚开始。我们仍然可以通过极客时间的留言区、部落、QQ 群等方式,进行线上的互动;也可以通过线下 meetup 的方式见面聊。这种互动所产生的价值,远比单向的知识输出更有意义,也更加持久,这样我才算是走完了最后的十里路。

另外,我们专栏的编辑同学,特意为你准备了一份结课调查问卷,希望你能抽出两三分钟时间填问卷,写下你的学习经历和感受。这既是学习一门课程的仪式感,可以作为你这几个月学习的记录和总结;也是我后续为你迭代优化课程的重要参考资料,很有价值。我很希望能听到你的声音。

各位,道阻且长,行则将至,我们江湖再见!

精选留言

  • Charles

    2019-09-21 00:09:09

    感谢温老师,实话说openresty不一定学的好,小项目也不一定用得上,但是很多知识点思想相通可以马上给项目带来“收益”,课程非常值,一路跟下来很开心😃
    作者回复

    是的,没错,很多知识在多个不同的技术专栏中,都会被提到,这就是融会贯通了:)

    2019-09-27 17:22:24

  • 许童童

    2019-09-20 17:39:07

    感谢老师,跟着老师真的学到了很多,希望可以在公司真实项目中运用一把openResty。加油,行百里者半九十。
    作者回复

    加油

    2019-09-27 17:45:52

  • X

    2019-09-20 11:24:59

    看到有人评论说,如果说春哥是OR的生父,温铭老师就是OR的养父👏👏

    深感如此,这个专栏学完就是捡大便宜了,从最新、最佳用法,到最底层的设计原理和背景,讲得生动有趣、鞭辟入里,赞一个!

    十分感谢老师!!
  • Camosi

    2020-05-30 13:40:54

    最近刚看到这个课程。 现在有个问题,不知道老师能否帮解答一下。
    我用的 manjaro 利用yay安装 openresty/1.15.8.2 。
    简单的做了一个这样的配置,

    content_by_lua_block { ngx.say("{\"code\":\"200\",\"msg\":\"success\"}") }

    当我用wrk做压力测试的时候, openresy 服务的内存还是逐渐增加
    而且当压测结束后,内存并未释放。 不太清楚这是因为原因导致的。
    将 lua_malloc_trim 0; 也未起任何作用。
  • FF

    2020-05-21 14:06:18

    突出了重点,收获很大
  • 丁丁历险记

    2020-04-30 08:41:06

    学习往往是验证自己对知识的理解,和发现细节的乐趣。
  • cloudy

    2020-02-27 20:04:51

    第一个完整跟完的项目,总的来说,讲解得深入浅出。 值得推荐
  • AlexHuang

    2019-11-14 12:42:26

    关注openresty已经有三年,项目中实践做了一个API网关。一直期待有个专栏能系统地学习,这个专栏做的很棒,感谢温老师!
  • 王崧霁

    2019-10-06 22:07:19

    很有收获,很值得,感谢温老师。
  • 冲野

    2019-10-06 20:39:00

    跟完了,学到了不少理念,希望后续能用到日常工作中
  • aoneatwo

    2019-09-29 19:19:33

    太棒了
  • moshufenmo

    2019-09-23 07:44:20

    感谢,温故知新,巩固学习
    作者回复

    加油

    2019-09-27 17:18:34

  • Geek_ysedro

    2019-09-20 22:03:00

    来捧场!!😄
  • 写点啥呢

    2019-09-20 21:46:08

    感谢老师,马上就打算上手了,非常开心能有机会从大牛身上学到一点。江湖再见!
    作者回复

    用了 OpenResty 的大部分同学会喜欢上这门技术:)

    2019-09-27 17:23:00

  • 丢了个丢丢丢

    2019-09-20 11:22:40

    老师讲得很好,回复留言也很积极,作为初学者可以跟大牛互动非常开心,谢谢老师
    作者回复

    一起加油

    2019-09-27 17:23:14

  • @阿锦啊

    2019-09-20 11:08:42

    江湖再见,部落见🤗
    作者回复

    :)

    2019-09-27 17:45:00

  • 空知

    2019-09-20 08:35:32

    😃感谢老师!