使用Node JS Socket IO和JSON文件的实时聊天应用程序

时间:2014-02-11 05:17:26

标签: json node.js socket.io forever

我正在使用Node JS,Socket IO和JSON文件开发实时聊天应用程序。我正在使用JSON文件来读写聊天数据。现在我陷入了一个问题,当我进行压力测试,即将连续消息推送到JSON文件时,JSON格式变得无效,我的应用程序崩溃。虽然我使用forever.js应该保持应用程序但仍然应用程序崩溃。 有没有人对此有所了解? 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

强烈建议您重新考虑将数据保存到磁盘的方法。

除此之外,一个非常重要的问题是您可能会遇到数据丢失。如果我们都在同一时间获取文件 - {"foo":"bar"} - 我们都进行了更改并将其保存在我面前,我的更改将覆盖您的文件,因为我开始时和您一样。虽然你把它保存在我之前,但是在你保存之后我没有重新打开它。

您现在可能在仅附加方法中看到的是,我们都在不考虑有效的JSON结构(IE:来自{"fo"bao":r":"ba"for"o"} x 2的{"foo":"bar"})中添加点点滴滴。 / p>

磁盘I / O实际上非常慢。即使使用SSD硬盘。记忆就在这里。

根据建议,您可能需要考虑MongoDBMySQL或其他方式。对于Couchbase来说,这可能是一个不错的用例,它是一个基于内存的内存键/值存储,可以将内容保存到磁盘上。它非常JSON友好(它实际上主要基于JSON),为查询数据提供出色的map / reduce支持,超级易于扩展到多个服务器,并且具有node.js module

这将允许您非常轻松地将现有数据存储例程迁移到数据库中。此外,它还提供CAS支持,可以防止您在前面概述的方案中丢失数据。

至少,您应该只修改一个经常保存到磁盘的内存对象,以防止永久性数据丢失。但是,这只适用于1台服务器,然后您可能需要查看数据库。