有一段時間我處理這個問題,但是我找不到好的解決方案。試想一下,有一個CRUD節點應用與卡桑德拉集羣通信:)通過多個nodejs進程進行併發文檔更改的解決方案?
例如,應用程序有這樣的路線:
curl -X POST 127.0.0.1:8080/characters -d '{"id":1, "name": "boba fett"}'
curl -X PUT 127.0.0.1:8080/characters/1 -d '{"name": "Boba Fett"}' #<-- the problem
curl -X GET 127.0.0.1:8080/characters/1
curl -X DELETE 127.0.0.1:8080/characters/1
現在你應該可以用同樣的邏輯運行多個進程的NodeJS,但以防止由兩個進程更改數據庫中同一文檔的可能性。
我的想法是:
僅處理中的一個可以修改文檔
每個過程得到一個ID範圍(例如,處理的修改文檔具有偶數編號,和方法b修改與奇數編號的文件 )
任何其他的想法?
我不認爲它可以是一個解決方案。 想象一下,過程** A **和過程** B **在同一時間「01.01.2016T00:00:00.000Z」更新文檔** A1 **。進程** C **在一秒鐘後讀取文件** A1 **。 問:什麼數據得到進程** C **? 1)改變過程** A **; 2)來自過程** B **的變化; 3)進程的變化,這是最後記錄到數據庫中的數據。 – yacut