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
《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 是去处理其他请求的逻辑,并且把当前请求挂起。 等数据库返回了结果后,才唤醒之前的请求,这样就做到了同步。
34 - Luciano李鑫pr是啥意思
作者回复: 是 GitHub 中 Pull Request 的缩写
3 - 馬偉偉💫期待已久,第一次听说这技术就是在网易云课堂老师讲的课,买了书准备学习老师就开了极客时间的专栏,结合书集和老师的专栏希望能有所收获。
作者回复: 一起学习
3 - 阳仔Lua到底怎么读?
作者回复: 我读“路啦”
22 - 许多子请问openresty可不可以就当作nginx来使用呢?不写lua的情况下,用来搭建web服务器,这两者有没有区别呢?
作者回复: 当然可以,OpenResty 是基于 NGINX 的。但需要注意的是,OpenResty 的版本一般会落后于 NGINX。
2 - ZeroIce老师,异步可否通过js 宏、微任务进行理解?即:单线程js想做多线程的事(例:settimeout), 非阻塞:通过多线程进行并发处理
作者回复: js 的不太懂
- book尾汁学了这门课程,还用看openresty入门到实践那本书吗
作者回复: 没有了解过这本书,不好评价
收起评论