APP下载
报价宝  ›  科技  › 

nginx的指令码特性-nginScript笔记

报价宝 来源:baojiabao.com 发布时间:2019-08-04 19:48:00 10月15日更新
报价宝综合消息nginx的指令码特性-nginScript笔记

原文:https://blog.csdn.net/lihongxun945/article/details/48900489

最近 nginx 团队宣布自己写了一个JS runtime,叫 nginScript,参见官方的介绍:https://www.nginx.com/blog/nginscript-why-our-own-javascript-implementation/

nginScript 是什么

nginScript 是一个JS runtime,也就是俗称的JS引擎,和V8做的是类似的事。目前他实现了一个 ES5的子集,它的程式码会被编译成字节码,并且直接在nginx中执行。他用的是一个register-based virtual machine,关于这个VM并没有任何说明。

当前的版本是一个preview版本,nginx可以通过两种方式执行JS程式码: 可以在nginx的配置中计算一些值 在nginx生成content的时候执行

为什么要再造一个 nginScript

Our goal is for nginScript snippets to be run when NGINX processes a request, in order to extend and inform the processing of requests and responses。

也就是说,nginScript的目的是在一个nginx请求中可以执行一些处理资料之类的操作,而不是想nodejs一样提供一个完备的持久执行的环境。

而为什么不直接用V8呢? 因为 V8 设计之初就是给浏览器中的,它的内存管理机制非常不可控,很容易因为内存溢位之类的问题导致程序终止。虽然对浏览器几乎没有影响,但是在需要长时间稳定执行的服务器来说这就是非常致命的。

nginScript主要希望能满足一下几个需求:

架构。 单执行绪,字节码的设计是为了保证能迅速初始化和销毁。每一个request都有自己一个独立的VM,所以可以以request为单位进行垃圾回收,一个request结束之后可以全部回收内存,并且这样可以使每个request都是独立的环境,不会因为一个request的问题导致全部request阻塞。

工具类。 nginScript提供很多常用的工具类,比如hash date等。并且都是呼叫native程式码,所以速度很快。你可以认为nginScript就是一堆native方法的JS界面。

优先执行权。 nginScript会自动暂停那些阻塞操作的执行绪,比如一个执行绪传送一个同步的网络请求,nginScript会自动暂停这个执行绪,并且在请求成功的时候再通知他。这样可以用同步程式码写出异步的效果,让程式码更易读。

关于效能

nginScript现在是先编译成字节码,再在VM中执行字节码(很像JAVA)。他们也希望能增加JIT(即时编译)功能(不懂JIT的参见这里 https://en.wikipedia.org/wiki/Just-in-time_compilation )。现在的测试结果是,nginScript和其他的解释语言的效能相近,比如 PHP和Ruby。但是没有即时编译语言快。

并且nginScript的目的是在nginx中执行一些简单的内部操作和本地操作规则,而不是做一些需要大量CPU计算的事情,因为这些是C语言做的事。关键的效能是要优化的,但是不能简单的和JIT语言比效能。

未来

现在只是一个预览版,现在的主要精力是实现一些JS的核心功能,比如闭包,和一些常用的内建物件,比如 Date

后续的重点会放在 整合 上:

如何用nginScript写nginx配置nginScript如何访问和控制nginxnginx 如何把相关资料传给 nginScript

我的一点理解

nginScript 虽然是一个runtime,但是其实它并不打算取代V8做后台的业务逻辑,它现在的中心主要是: 和nginx的无缝整合,互相访问和控制 优化效能,只专注于在nginx中执行简单的规则,比如呼叫一个C的时间模组,并不打算写复杂的业务逻辑。

相对于V8和Nodejs可以提供完善的ES实现和丰富的库,nginScript只是实现了JS中很小的一块内容。所以至少相当长的时间内,nginScript不会和V8有直接的竞争关系。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 手机价格 汽车价格 笔记本电脑价格 红米手机价格 耳机价格