Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
有个梨UGlee 2019-12-11 04:08:03 发布的技术动态 - OurCoders (我们程序员)
有个梨UGlee
2019-12-11 04:08:03 发布
suppose网络里很多nodejs设备,都做了沙箱,即没有提供require功能但是在sandbox里在global上放了一堆常用函数。

我们从一个A节点开始,就像shell一样写一段node js程序,但是它可以显式指定一部分代码运行在网络中的哪个节点上,和require的做法类似,把source包成一个大函数然后to string即可发到另一个沙箱里执行。

这里统一抽象的方式有两个。

第一个抽象是类似RPC的做法,形式上可以是:

node[1].run(f, callback)

这个callback是本地执行的,f是远端执行的,callback获得的结果数据可以是从远程节点返回的JSON。本质上这个做法和云上的lambda很接近。它牛逼的地方是,在node这种纯异步的代码形式下你可以混写代码。

这就像在C里面写spawn,父进程和子进程代码是一套的,对开发来说非常方便。

第二个抽象是类似pipe的做法。pipe本质上,对node的设计来说,就是readable和writable。

那么代码形式上可以是创建一个readable在node A上,创建一个writable在node B上,然后就是node经典的pipe函数。但是背后是a和b直接走网络连接把数据pipe过去了。

这两个形式在node里都是和现有的异步和流代码很兼容的。包括emitter,也可以有remote emitter。

这个能力虽然不说是其它很多语言做不到,但是就算能做到,也完全不会象node这样纯异步加上js动态和可eval做起来简单。

这个才是真正的网络编程。现在的RPC种种,restful之流,都太玩具了。包括docker也一样是个补丁技术。

iot时代,nodejs想不红都难。