Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js web sockets服务器:我对数据管理的想法是否稳定/可扩展?_Javascript_Database_Object_Node.js_Websocket - Fatal编程技术网

Javascript Node.js web sockets服务器:我对数据管理的想法是否稳定/可扩展?

Javascript Node.js web sockets服务器:我对数据管理的想法是否稳定/可扩展?,javascript,database,object,node.js,websocket,Javascript,Database,Object,Node.js,Websocket,我正在开发一个html5浏览器多玩家RPG,node.js在后端运行,带有用于客户端数据传输的web套接字插件。我面临的问题是访问和更新用户数据,您可以想象,即使连接的用户很少,这个过程每秒也会发生很多次 我做了一些搜索,只找到了2个支持MySQL功能的node.js插件,但它们都处于早期开发阶段,我认为查询数据库中用户所做的每一个小动作都是没有效率的 我的想法是让node.js在用户连接并检索与该用户相关的所有信息时使用PHP访问数据库。然后,收集的信息将存储在node.js中的JavaScr

我正在开发一个html5浏览器多玩家RPG,node.js在后端运行,带有用于客户端数据传输的web套接字插件。我面临的问题是访问和更新用户数据,您可以想象,即使连接的用户很少,这个过程每秒也会发生很多次

我做了一些搜索,只找到了2个支持MySQL功能的node.js插件,但它们都处于早期开发阶段,我认为查询数据库中用户所做的每一个小动作都是没有效率的

我的想法是让node.js在用户连接并检索与该用户相关的所有信息时使用PHP访问数据库。然后,收集的信息将存储在node.js中的JavaScript对象中。这将发生在所有玩游戏的用户身上。然后更新将应用于对象。当用户注销时,存储在对象中的数据将更新到数据库并从对象中删除

需要注意的几件事是,我将把不同类型的数据分成不同的对象,这样更常见的访问数据就不会与会减慢查找速度的数据混合在一起。从理论上讲,如果这个项目获得了大量用户,我会引入一个上限,即出于明显的原因,一次可以登录到单个服务器的用户数

我想知道这是不是个好主意。拥有大型对象会大大降低node.js服务器的速度吗?如果你碰巧对我的情况有任何其他可能的解决办法,我欢迎他们


就您的策略而言,感谢您将数据保存在php的中间对象中,您为应用程序增加了非常高的复杂性

只是node.js和php之间的通信看起来很复杂,而且不能保证这比在mysql中进行正确的操作更快。在您和您的数据之间放置任何未经编辑的barier将使事情更加难以管理

似乎您需要更快速的数据解决方案。可以考虑使用一个异步数据库,如MangGDB或ReDIS,它将快速读取和写入(ReDIS将在内存中写入,应该是非常快的)

它们都常用于node.js,只是因为它们可以处理实时数据加载

实际上,redis是您真正需要的,它实际上将东西存储在内存中,然后定期将其保存到磁盘。你不能比这更快,但你需要足够的内存。如果ram看起来像个问题,那么使用mongodb,它仍然非常快


缺点是您需要重新学习关于数据持久性的概念,这很难。我自己也在做这件事

我有一个应用程序在做您描述的所有事情-我选择这样做,因为节点的MYSQL驱动程序在开发时不稳定/没有文档记录

我有200个连接的用户-每秒请求数据3-5次,并通过php页面(每个200-800毫秒)从apache返回JSON获取整个表,大约有1000行,并将内容放入数组中。我循环遍历数组,根据请求查找相关数据——它工作正常,速度快——不会给cpu和内存带来很大的负载

所有受限制的数据插入/更新都通过php/mysql进行

优点: 1.这是一个简单的解决方案,具有已知的稳定服务。 2.每200-800毫秒只有一个客户端连接到apache/php/mysql 3.所有节点客户端都可以获得非阻塞的好处。 4.在2台小型“pc风格”服务器上运行,每秒处理8000个请求。(阿帕奇长凳)

缺点: 1.很多-但它完成了任务


我发现我的节点脚本每周可能会停止1-2次——可能是由于一些连接问题(未解决)——但结合Upstart和Monit,它会重新启动并发出警报,不会出现任何问题……

这个MySQL模块至少可以正常工作:看起来我没有明确我最初的想法。我计划将数据存储在服务器上的JavaScript对象中,并且仅在用户连接时使用PHP查询服务器。尽管如此,听起来Redis才是我想要的。感谢您的意见。:)