我正在使用Node JS,Socket IO和JSON文件开发实时聊天应用程序。我正在使用JSON文件来读写聊天数据。现在我陷入了一个问题,当我进行压力测试,即将连续消息推送到JSON文件时,JSON格式变得无效,我的应用程序崩溃。虽然我使用forever.js应该保持应用程序但仍然应用程序崩溃。 有没有人对此有所了解? 在此先感谢您的帮助。
答案 0 :(得分:0)
强烈建议您重新考虑将数据保存到磁盘的方法。
除此之外,一个非常重要的问题是您可能会遇到数据丢失。如果我们都在同一时间获取文件 - {"foo":"bar"}
- 我们都进行了更改并将其保存在我面前,我的更改将覆盖您的文件,因为我开始时和您一样。虽然你把它保存在我之前,但是在你保存之后我没有重新打开它。
您现在可能在仅附加方法中看到的是,我们都在不考虑有效的JSON结构(IE:来自{"fo"bao":r":"ba"for"o"}
x 2的{"foo":"bar"}
)中添加点点滴滴。 / p>
磁盘I / O实际上非常慢。即使使用SSD硬盘。记忆就在这里。
根据建议,您可能需要考虑MongoDB,MySQL或其他方式。对于Couchbase来说,这可能是一个不错的用例,它是一个基于内存的内存键/值存储,可以将内容保存到磁盘上。它非常JSON友好(它实际上主要基于JSON),为查询数据提供出色的map / reduce支持,超级易于扩展到多个服务器,并且具有node.js module。
这将允许您非常轻松地将现有数据存储例程迁移到数据库中。此外,它还提供CAS支持,可以防止您在前面概述的方案中丢失数据。
至少,您应该只修改一个经常保存到磁盘的内存对象,以防止永久性数据丢失。但是,这只适用于1台服务器,然后您可能需要查看数据库。