人们常说,做事最好能站在巨人的肩膀上,事实上很多突破性的科技发明都离不开巨人的肩膀,技术也是如此。Linux 的诞生和普及得益于 Unix,macOS 则基于早期的 System 系统和 NextStep 的整合,Android 和 iOS 又分别站在了 Linux 和 macOS 的肩膀上。莫不如是。
标题里提到的 OR 就是国内著名开源项目 OpenResty 的简称,OR 是站在了 Nginx 这个巨人的肩上,并取得了巨大成功。说是国产开源项目的典范也不为过,比肩著名前端项目 Vue。
OpenResty 到底解决了什么问题? 我们先捋一下 Nginx 的历史,再看下 OpenResty 治了什么病。
对于从来没有自己搭过网站的同学,建议到 Youtube 上去看一个哈弗的关于 web development 的公开课,David Malan 讲的,非常好,我自己以前也写过一篇构建个人网站的文章,也可以找来读读。了解了做一个网站的基本常识,就能理解为什么 Nginx 这么火了。Nginx 解决了网站搭建中一些基础问题,比如同步,性能,内存管理等。而且它提供了一个 reverse proxy 服务器,一个 load balancer 和 HTTP cache。
与 Nginx 并存的开源 Web Server 很多,比如 Apache HTTP Server,Lighttpd,Cherokee,HTTP Explorer,HTTP File Server 等等。在 Nginx 出来之前,HTTP Server 才是王者,结果 Nginx 基于异步事件驱动的模块化设计理念让 Nginx 大放异彩,它在高负载的情况下可以提供更可预测的性能,而高并发和高负载则是近二十年来互联网的永恒主题。于是,后浪推前浪,Nginx 成为了 Web Server 新贵。
不过 Nginx 也有自己的局限性。一个问题就是,如何方便有效的把基于特定应用需要的配置写到 Nginx 申明式配置文件里,比如配置一个 Redis client driver。于是大家开始写各种基于 Nginx 的模块,或者根据业务需要围绕着 Nginx 写越来越多的边缘代码来满足不同的需求。如何管理和维护这些模块与代码,并且保证模块依然是静态链接的,这件事耗费了工程师们大量时间,并且代码维护起来也变的很复杂。
有问题就会有解决方案,于是 OpenResty 出现了,它的创始人是著名 程序员 章亦春。作为一个 兼具开发效率和性能 的服务端开发平台,OpenResty 并不像其他开发语言一样从零搭建,而是 基于成熟的开源组件 —— Nginx 和 LuaJIT。嗯,俩肩膀。
OR 的核心是基于 Nginx 的一个 C 模块(lua-nginx-module),将 LuaJIT 嵌入到 Nginx 服务器中,并对外提供一套完整的 Lua API,透明地支持非阻塞 I/O,提供了轻量级线程、定时器等高级抽象。
围绕这个模块,OpenResty 构建了一套完备的测试框架、调试技术和由 Lua 实现的周边功能库,彻底突破了 Nginx 的局限性。
你可以用 Lua 语言进行字符串和数值运算、查询数据库、发送 HTTP 请求、执行定时任务、调用外部命令等,还可以用 FFI 的方式调用外部 C 函数。
这基本上 满足了服务端开发所需要的全部功能 。OpenResty 的 适用范围早已超出了反向代理和负载均衡。
这就意味着,掌握了 OpenResty,就能同时拥有 脚本语言的开发效率和迭代速度 ,以及 Nginx C 模块的高并发和高性能优势 。
通过丰富的 lua-resty 库,OpenResty 已逐渐摆脱 Nginx 的影子,形成了自己的生态体系,在 API 网关、高并发场景、软 WAF 等领域被广泛使用。
那么有没有类似的技术呢?你可以自己检索一下,可以肯定的说,几乎找不到任何一个可以匹敌 OR 的工具。可能有些框架从某个侧面解决了某个特定的问题,但是没有一个是像 OpenResty 这样,解决的如此彻底。
OpenResty 通过汇聚各种设计精良的 Nginx 模块,从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 C10K 乃至 C1000K 以上单机并发连接的高性能 Web 应用系统。
快到飞起。
我在锤科任职的时候,大量的底层服务都采用了 OpenResty 技术,目前极客邦也是如此。如何把 OR 更好的推给中国的开发者呢?我们邀请了温铭来极客时间开设了专栏「 OpenRest 从入门到实战 」,补足这个技术板块。
温铭是 OpenResty 软件基金会主席,《 OpenResty 最佳实践 》作者,前 360 开源技术委员会委员,资深的 OpenResty 开发者。他和我们的教研团队如何组织这门课程呢?
实践出真知,在专栏中,温铭将秉承 “从实战中来,到实战中去” 的原则讲解。专栏中的不少代码,都取自 开源 OpenResty 的测试案例和实际的开源项目 。目的是让你在入门之初,就接触最优秀的代码,了解真实的使用场景。
同时,温铭还会在专栏文章中 穿插多个视频课程, 内容都取自 真实开源项目的功能点和 PR 。通过视频,你会更加直观地看到,刚学到的知识点是如何在实际中应用的。
专栏最后的 实战部分 ,是练习者的真实「战场」:温铭会带你一起, 用 OpenResty 从零搭建一个微服务 API 网关 。
这个专栏内容翔实充足,包含图文、音频和视频制作,综合考虑定价是 129 元。不过优惠期我们还是采用了更低的价格 68 元,期待更多人加入到 OpenResty 的学习中来,丰富和壮大这个社区。
期待你的加入,不要错过优惠期哦
以上所述就是小编给大家介绍的《站在巨人肩膀上的 OR,快到飞起》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 站在巨人的肩膀上
- NLP 的巨人肩膀(下):从 CoVe 到 BERT
- 红芯造假:不要“站在巨人的肩膀上”蹬鼻子上脸
- 利用FastDFS搭建文件服务Docker一键启动集成版 - 在巨人肩膀上奔跑系列
- 站在BERT肩膀上的NLP新秀们(PART I)
- 站在BERT肩膀上的NLP新秀们(PART III)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。