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

01 | 初探OpenResty的三大特性

你好,我是温铭。
开篇词里我们说过,OpenResty 的优势显而易见。不过,在具体学习之前,让我们先简单回顾下 OpenResty 的发展过程,这有助于你对后面内容有更好的理解。

OpenResty 的发展

OpenResty 并不像其他的开发语言一样从零开始搭建,而是基于成熟的开源组件——NGINX 和 LuaJIT。OpenResty 诞生于 2007 年,不过,它的第一个版本并没有选择 Lua,而是用了 Perl,这跟作者章亦春的技术偏好有很大关系。
但 Perl 的性能远远不能达到要求,于是,在第二个版本中,Perl 就被 Lua 给替换了。 不过,在 OpenResty 官方的项目中,Perl 依然占据着重要的角色,OpenResty 工程化方面都是用 Perl 来构建,比如测试框架、Linter、CLI 等,后面我们也会逐步介绍。
后来,章亦春离开了淘宝,加入了美国的 CDN 公司 Cloudflare。因为 OpenResty 高性能和动态的优势很适合 CDN 的业务需求,很快, OpenResty 就成为 CDN 的技术标准。 通过丰富的 lua-resty 库,OpenResty 开始逐渐摆脱 NGINX 的影子,形成自己的生态体系,在 API 网关、软 WAF 等领域被广泛使用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenResty 从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • zhang
    分享一篇以前学openresty 时写的笔记,当时处于一个阅读过nginx源码,但是没有实际使用或者开发nginx的情况,另外个人的描述描述能力也比较差,很多知识储备不足。 当时写这篇笔记并不是对源码进行解读,只是站在一个有什么功能,我应该如何实现它,它是如何做的,这样一个角度去分析的。 希望这篇笔记可以让大家有一定收获,也希望我们可以互相扶持,一起坚持下去,学好这门课程。 http://note.youdao.com/noteshare?id=965c9f034a82ffb0f8b4de6ca81f3e73

    作者回复: 👍 一起学习

    15
  • 一步
    看了下 openresty github 仓库 https://github.com/openresty/openresty 发现 t文件夹下没有什么测试文件,这个是需要看每个相关的模块的仓库吗? 又看了 https://github.com/openresty/lua-nginx-module 这个模块发现 t文件夹下是有测试文件的

    作者回复: https://github.com/openresty/openresty 是用于打源码包的项目,所以测试案例不多。 是的,需要看这个子项目的仓库。

    7
  • FF
    请教下温老师,关于阻塞/非阻塞。 如果 CPU 趁机去处理其他连接的请求,那就是非阻塞。 但对于用户线程来讲,怎么理解这个非阻塞呢? 理解1,这个查询的用户线程是不是还得阻塞等待 1 秒钟等待返回?这样的话应用的性能还是会不理想? 理解2,用户线程也是非阻塞,操作系统线程非阻塞返回后,用户的数据不一定有,这个时候用户线程要轮询去调用查询,直到有数据。这样的话,对于应用来讲,性能不是一样不理想? 哪种理解是对的呢?但无论哪种,用户应用性能可能都提不上理想,这样的话为何非阻塞是C10K,C100K 实现的关键呢?

    作者回复: 理解 1 是对的。站在用户请求的角度,非阻塞并不会减少处理的时间,但是会减少等待的时间。OpenResty 的每个 worker 同一时间只在处理一个请求,如果阻塞了,这个 worker 上的其他请求都需要等待。 C10K 要解决的是高并发的问题,是服务端的整体性能。

    5
  • shonm
    老师你好,上面的代码中,如果是非阻塞的,他不是立马返回吗,怎么又会等1秒,怎么做到同步呢?

    作者回复: 非阻塞的自然不会等待 1 秒,但这 1 秒钟的时间内,CPU 是去处理其他请求的逻辑,并且把当前请求挂起。 等数据库返回了结果后,才唤醒之前的请求,这样就做到了同步。

    3
    4
  • Luciano李鑫
    pr是啥意思

    作者回复: 是 GitHub 中 Pull Request 的缩写

    3
  • 馬偉偉💫
    期待已久,第一次听说这技术就是在网易云课堂老师讲的课,买了书准备学习老师就开了极客时间的专栏,结合书集和老师的专栏希望能有所收获。

    作者回复: 一起学习

    3
  • 阳仔
    Lua到底怎么读?

    作者回复: 我读“路啦”

    2
    2
  • 许多子
    请问openresty可不可以就当作nginx来使用呢?不写lua的情况下,用来搭建web服务器,这两者有没有区别呢?

    作者回复: 当然可以,OpenResty 是基于 NGINX 的。但需要注意的是,OpenResty 的版本一般会落后于 NGINX。

    2
  • ZeroIce
    老师,异步可否通过js 宏、微任务进行理解?即:单线程js想做多线程的事(例:settimeout), 非阻塞:通过多线程进行并发处理

    作者回复: js 的不太懂

  • book尾汁
    学了这门课程,还用看openresty入门到实践那本书吗

    作者回复: 没有了解过这本书,不好评价

收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部