美文网首页
node.js的句柄传递

node.js的句柄传递

作者: yydounai | 来源:发表于2017-11-01 13:52 被阅读0次

       在一个主机启动多个服务器进程,让这些进程监听同一个端口号是不可能的 ,这是因为服务器的套接字文件描述符不相同,一个socket一个描述符只能用一个端口,所以在node.JS中想多进程监听同一个端口,之前的做法是主进程监听主端口,然后将请求分别代理到不同端口的子进程上,缺点是每创建一个socket需要用掉一个描述符,要知道进程描述符和系统描述符有数量限制的。ps:node底层对于每个端口都设置了一个选项,这个选项的含义是服务器套接字可以被不同进程复用的。只有系统级的描述表引用计数为0了才释放

      node为了解决这个问题加了一个进程间发送句柄的功能,send()方法不仅可以发送信息还可以发送句柄,句柄(文件描述符)其实是指针,指向内核中的文件信息,句柄对象可以是服务器、套接字(任何具有底层_handle成员的东西)。send()包括handle和message,如果message.cmd的值为NODE_HANDLE,取出message.type的值创建对应的对象,然后监听句柄。进程之间只是传递信息,并不是传递对象,具体底层原理以传递socket为例:参考文章父子进程之间,在同一地址下的 socket 传递时,各自都额外维护一个关联列表存储这些 socket 信息和ChildProcess实例,并且父进程中的net#Server类实例自己保存下所有父进程关联列表。在调用net.Server#getConnections这类方法时,遍历列表中的ChildPorcess实例发送内部消息,子进程列表中的对应项收到内部消息并处理返回,父进程中再结合返回结果和对应着这个ChildProcess类实例维护的 socket 信息,保证功能的正确性。

个人理解,仅保存学习

相关文章

  • node.js的句柄传递

    在一个主机启动多个服务器进程,让这些进程监听同一个端口号是不可能的 ,这是因为服务器的套接字文件描述符不相同...

  • 第十二章 传递和返回对象 2018-11-14

    1.传入句柄,修改后该句柄指向的对象会修改! ■参数传递过程中会自动产生别名问题 ■不存在本地对象,只有本地句柄 ...

  • Fetch POST传递参数及Node.js接收参数

    Fetch POST传递参数及Node.js接收参数 标签(空格分隔): Node.js XMLHttpReque...

  • useCallBack,useMemo,forwardRef,u

    2021.6.19更:useImperativeHandle的第一个参数为ref句柄,即父组件传递到子组件的ref...

  • java

    句柄 参考 java句柄 什么是句柄句柄(Handle)来标示应用程序中不同的对象和同类中不同的实例注意:句柄有人...

  • 句柄表和继承

    句柄表和继承 句柄代表着备操作的对象 句柄的本质(handler) 句柄表可以看做一个非常大的机构体数组句柄表的结...

  • Perl语言学习(八)Perl文件操作

    八、Perl文件操作 1、Perl句柄 句柄的定义Perl通过句柄和“外面”的世界连接句柄是一个顺序号,对于打开的...

  • 对象访问定位

    对象访问定位 句柄 在Java堆划分一块内存作为句柄池,reference中存储的对象的句柄地址,句柄中包含对象实...

  • C++进阶

    API及类型 HANDLE类型 ->进程句柄HWND 类型 ->窗口句柄句柄CreateToolhelp32Sna...

  • 06.Perl -- 文件操作

    Perl 句柄 句柄的定义 Perl通过句柄和“外面”的世界连接 句柄是一个顺序号,对于打开的文件是唯一的识别依据...

网友评论

      本文标题:node.js的句柄传递

      本文链接:https://www.haomeiwen.com/subject/bqmwpxtx.html