Node.js Core -Best Javascript Runtime

Node.js 是非常优秀的 Javascript Runtime,NodejsCore介绍 Node.js 框架、应用程序和服务器端的开发问题

Learn more

有没有办法在Node.JS中的worker / threads / something中共享内存?

我有一个Node应用程序访问一个静态的,大型(> 100M),复杂的内存数据结构,接受查询,然后通过HTTP向客户端提供一小部分的数据。 大多数查询可以在十分之一秒内回答。 华丽的节点! 但是,对于某些查询,search这个数据结构需要几秒钟的时间。 这很糟糕,因为其他人都必须等待。 为了更有效地服务更多的客户,我想使用某种并行性。 但是,由于这个数据结构如此之大,我想在工作者或者线程之间分享,或者你有什么,所以我不会烧数百兆字节。 这将是完全安全的,因为数据结构不会被写入。 任何其他语言的典型“fork()”都可以。 但是,据我所知,在Node中执行并行的所有标准方法明确地使这是不可能的。 为了安全,他们不希望你分享任何东西。 但有没有办法? 背景: 把这个数据结构放在数据库中,或者使用memcached或者类似的东西是不切实际的。 WebWorker API库和类似的只允许简短的序列化消息传入和传出工作人员。 节点的群集使用名为“叉”的调用,但它不是真正的现有过程的叉,它正在产生一个新的。 所以再一次,没有共享的记忆。 可能真正正确的答案是使用文件系统访问共享内存,也就是tmpfs或mmap。 有一些节点库使得mount()和mmap()完全可以用于这样的事情。 不幸的是,人们必须在同步查询和读取之上实现复杂的数据结构访问。 我的应用程序使用数组的字典等数组。 不用重新实现就好了。