我正在開發使用節點JS,套接字IO和JSON文件的實時聊天應用程序。我正在使用JSON文件來讀取和寫入聊天數據。現在我遇到了一個問題,當我進行壓力測試時,即將連續消息推送到JSON文件中時,JSON格式變得無效,並且我的應用程序崩潰了。儘管我使用的forever.js應該保持應用程序正常運行,但應用程序仍然崩潰。 有沒有人有這個想法? 在此先感謝您的幫助。使用節點JS套接字IO和JSON文件的在線聊天應用程序
0
A
回答
0
強烈建議您重新考慮將數據保存到磁盤的方法。
除此之外,其中一個很大的問題是您可能會遇到數據丟失。如果我們都在同一時間獲得文件 - {"foo":"bar"}
- 我們都做出了改變,並將它保存在我的面前,我的改變會覆蓋你的文件,因爲我開始時的操作與你一樣。儘管您已將它保存在我之前,但在保存後我沒有重新打開它。
你現在可能看到的僅僅是追加的方法是,我們都在不考慮有效的JSON結構(IE:{"fo"bao":r":"ba"for"o"}
從{"foo":"bar"}
x 2)中添加零星和零件。
磁盤I/O其實很慢。即使使用SSD硬盤。記憶是它的位置。
按照建議,您可能要考慮MongoDB,MySQL或其他。對於Couchbase,這可能是一個不錯的使用案例,它是基於內存緩存的內存鍵/值存儲區,可將內容持久保存到磁盤。它非常適合JSON(它實際上主要基於JSON),爲查詢數據提供了很好的映射/減少支持,非常容易擴展到多個服務器,並且具有node.js module。
這將允許您非常輕鬆地將現有數據存儲例程遷移到數據庫中。此外,它還提供了CAS支持,可以防止您在前面概述的情況下丟失數據。
儘管如此,您應該修改一個內存對象,以便經常保存到磁盤以防止永久數據丟失。但是,這隻適用於1臺服務器,然後您可能需要查看數據庫。
相關問題
- 1. 使用節點js和UCWA的聊天應用程序
- 2. Java套接字聊天應用程序
- 3. 節點JS插槽IO聊天問題
- 4. 使用TCP或UDP套接字的VB 2008在線聊天應用程序
- 5. 使用Polymer和節點的實時聊天應用程序
- 6. 聊天室使用套接字編程
- 7. 在php中使用套接字編程(Erlang)的聊天應用程序
- 8. Python套接字聊天應用程序中的線程不會啓動
- 9. 如何在android中使用套接字編程創建聊天應用程序?
- 10. java中的UDP套接字聊天應用程序
- 11. 被動地收聽聊天應用程序的套接字
- 12. 使用線程或叉的文本聊天應用程序
- 13. 加密從節點/ Websockets聊天應用程序存儲在Mongo中的聊天
- 14. 使用套接字製作多線程聊天服務器
- 15. 多線程客戶端 - 服務器聊天,使用套接字
- 16. 套接字和Java聊天
- 17. C#多客戶端套接字聊天應用程序
- 18. 聊天應用程序,套接字與RMI
- 19. Java單線程聊天應用程序
- 20. C#TCP聊天應用程序線程
- 21. 使用套接字在web應用程序中聊天給我一個錯誤
- 22. 用戶使用套接字連接時創建一個cookie。 io - 節點js
- 23. 基本聊天應用程序使用Socket.io和Node js創建
- 24. 使用節點js,angular js和socket.io編寫的聊天應用程序不工作跨電腦
- 25. 在Xamarin和MVC聊天應用程序
- 26. 使用Pubnub的聊天應用程序
- 27. 使用線程處理基於java的聊天應用程序
- 28. 錯誤在套接字上使用節點請求庫io
- 29. 將Java TCP套接字聊天程序轉換爲.net C#TCP聊天程序
- 30. 在線和在AppEngine應用程序中聊天
爲什麼你首先使用文件? – Blender
因爲我不想用DB來保存記錄。其次,讀/寫從文件變得更快。 – user2763827
鍵值存儲或關係數據庫仍將比磁盤IO更快。測試一下。 – Blender