图像来源:屏幕截图来自https://blog.csdn.net/wh_crx/article/details/119116325
首先查看代码
演示代码背景:通过插座,真实 - 时间同步注释内容
,msg => {if(!arraybuffer.isview(msg)){return;} const [type] = msg;const值= msg.slice(1);const value.decode(valuebytes); {case Encode.Encode(wstypes.heartbeat)[0]:ws.send(getBuffer(wstypes.heartbeat,id,id));返回;case Encode.Encode(wstypes.setValue)[0]:if(valueVatedValvalValvalue):if(valuevated)])){thambounddict [id]。value = value;getwsinstance()?.getWss()?.clients?foreach(((wsitem:websocket)=> {console.log('ws',wsitem.intervidence,wsit,ws.uuid); if(wsitem.interviewId ==== id && wsitem.uuid!== ws.uuid){wsitem.send(getBuffer(wstypes.getValue,value));} return; case编码了ededededederdederd..encode(wstypes.getValue)[0] [0]:if(访谈dict [id])访谈[id] .value));} return;});};};};};};
扩展:为什么node.js不适合CPU - 密集型任务过程间 - 通信和线程间的线程通信:
节点是一个单个线程应用程序(一个过程,一个线程),单线线程的过程只能在CPU内核上运行。节点通过创建多过程来实现多线程。
线程:由于同一过程中的多个线程具有相同的地址空间,因此线程室可以直接读取和写入流程数据段(例如全局变量),仅需要协助过程同步和相互排除方法来确保一致性数据。
流程:过程通信需要通过系统IPC和其他方法进行通信,这远大于线程之间的通信开销。
生产环境部署服务的应用通常部署到两个或更多(可以是物理机器或虚拟机)。然后将NINGINX负载与每台机器保持平衡。
解决方案:redis,其他数据库。在这种情况下,它更适合redis
REDIS数据具有所有内存,并定期编写磁盘。如果内存不够,则通过LRU算法删除数据。
在鸡蛋中使用redis
有关特定代码,请参阅:https://github.com/nesror/bikini_service
问题:在这种情况下不能解决哪个数据库或不建议?
对于过程和线程,您需要了解更多有关它的信息。供参考,请参考以下内容
节点过程和线程:https://blog.csdn.net/wh_crx/article/details/119116325
linux-进程和线程:https://sementfault.com/a/1190000039297639
本文的作者:达芬无限-nestor_gu
原始:https://juejin.cn/post/7098161598304354312
