Некоторое время я занимаюсь этой проблемой, но хорошим решением я не смог найти. Представьте себе, что есть приложение 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)
Любые другие идеи?
Я не думаю, что это может быть решением. Представьте сценарий, который обрабатывает ** A ** и процесс ** B ** обновляет документ ** A1 ** в то же время '01.01.2016T00: 00: 00.000Z'. Процесс ** C ** считывает документ ** A1 ** через одну секунду после. В: Какие данные получают процесс ** C **? 1) Изменения в процессе ** A **; 2) Изменения в процессе ** B **; 3) Изменения процесса, которые являются последними записанными данными в базе данных. – yacut