This commit is contained in:
by931
2022-09-06 22:30:37 +08:00
parent 66970f3e38
commit 3d6528675a
796 changed files with 3382 additions and 3382 deletions

View File

@@ -272,12 +272,12 @@ function hide_canvas() {
<p>虽然 OpenResty 的核心是 Nginx但它又超越了 Nginx关键就在于其中的 ngx_lua 模块,把小巧灵活的 Lua 语言嵌入了 Nginx可以用脚本的方式操作 Nginx 内部的进程、多路复用、阶段式处理等各种构件。</p>
<p>脚本语言的好处你一定知道,它不需要编译,随写随执行,这就免去了 C 语言编写模块漫长的开发周期。而且 OpenResty 还把 Lua 自身的协程与 Nginx 的事件机制完美结合在一起,优雅地实现了许多其他语言所没有的“<strong>同步非阻塞</strong>”编程范式,能够轻松开发出高性能的 Web 应用。</p>
<p>目前 OpenResty 有两个分支分别是开源、免费的“OpenResty”和闭源、商业产品的“OpenResty+”运作方式有社区支持、OpenResty 基金会、OpenResty.Inc 公司,还有其他的一些外界赞助(例如 Kong、CloudFlare正在蓬勃发展。</p>
<p><img src="assets/9f7b79c43c476890f03c2c716a20f301.png" alt="unpreview" /></p>
<p><img src="assets/9f7b79c43c476890f03c2c716a20f301.png" alt="png" /></p>
<p>顺便说一下 OpenResty 的官方 logo是一只展翅飞翔的海鸥选择海鸥是因为“鸥”与 OpenResty 的发音相同。另外,这个 logo 的形状也像是左手比出的一个“OK”姿势正好也是一个“O”。</p>
<h2>动态的 Lua</h2>
<p>刚才说了OpenResty 里的一个关键模块是 ngx_lua它为 Nginx 引入了脚本语言 Lua。</p>
<p>Lua 是一个比较“小众”的语言,虽然历史比较悠久,但名气却没有 PHP、Python、JavaScript 大,这主要与它的自身定位有关。</p>
<p><img src="assets/4f24aa3f53969b71baaf7d9c7cf68fd5.png" alt="unpreview" /></p>
<p><img src="assets/4f24aa3f53969b71baaf7d9c7cf68fd5.png" alt="png" /></p>
<p>Lua 的设计目标是嵌入到其他应用程序里运行,为其他编程语言带来“脚本化”能力,所以它的“个头”比较小,功能集有限,不追求“大而全”,而是“小而美”,大多数时间都“隐匿”在其他应用程序的后面,是“无名英雄”。</p>
<p>你或许玩过或者听说过《魔兽世界》《愤怒的小鸟》吧,它们就在内部嵌入了 Lua使用 Lua 来调用底层接口充当“胶水语言”glue language编写游戏逻辑脚本提高开发效率。</p>
<p>OpenResty 选择 Lua 作为“工作语言”也是基于同样的考虑。因为 Nginx C 开发实在是太麻烦了,限制了 Nginx 的真正实力。而 Lua 作为“最快的脚本语言”恰好可以成为 Nginx 的完美搭档,既可以简化开发,性能上又不会有太多的损耗。</p>
@@ -329,7 +329,7 @@ end
<li>你觉得 Nginx 和 OpenResty 的“阶段式处理”有什么好处?对你的实际工作有没有启发?</li>
</ol>
<p>欢迎你把自己的学习体会写在留言区,与我和其他同学一起讨论。如果你觉得有所收获,也欢迎把文章分享给你的朋友。</p>
<p><img src="assets/c5b7ac40c585c800af0fe3ab98f3449f.png" alt="unpreview" /></p>
<p><img src="assets/c5b7ac40c585c800af0fe3ab98f3449f.png" alt="png" /></p>
</div>
</div>
<div>