Хорошо, прежде всего я хочу сказать вам, что я новичок во всех этих методах, упомянутых в названии.Realtime: Node.js, MongoDB и Redis?
Я хочу создать новое приложение. Подумайте об этом как о механизме торговли в реальном времени (например, для акций).
Итак, есть две вещи, которые действительно имеют значение:
- Скорость/Производительность: Каждый человек должен видеть сделки в режиме реального времени
- безопасности: Такие же сделки могут быть сделаны одновременно, но только один может быть успешным
Я думал о том подходе, как это:
Если пользователь хочет купить 10 мирах акций X за $ 100 каждый, он размещает заказ, который я STO re с Redis (скорость) и нажмите его всем клиентам с socket.io. Ну, как только другой пользователь хочет продать 15 моментов за 100 долларов, скрипт должен проверить, есть ли открытый заказ на покупку. Если это так, он сохраняет его как успешную транзакцию в MongoDB (persistance) и закрывает порядок покупки в 10 экземпляров.
В этом примере осталось 5 точек. Сценарий будет отображать это с таким расчетом: 15 (продается по цене 100 долларов США) минус 10 (покупка по цене 100 долларов США) равна 5 левым. Каждый раз, когда кто-то хочет торговать чем-то, этот расчет будет сделан, потому что я не знаю, сколько акций осталось для торговли.
Редактировать: Или я мог бы вычесть 10 миров из 15-ти краев в Redis, так что мне не нужно будет вычислять каждый раз. Но если что-то пойдет не так, я не знаю, что такое исходные данные. Это проблема.
Теперь вопросы:
- ли вы сделать это, как это? Может быть, лучше идеи?
- Что произойдет, если два пользователя сделают один и тот же заказ за одно и то же время? Может ли случиться, что он хранится два раза в MongoDB как разные успешные транзакции? Конечно, вы можете провести аудит Redis и MongoDB и сравнить его. Но это было бы ужасным решением.
Надеюсь, вы поймете, что я пытаюсь спросить. Заранее спасибо!
Вы должны сделать это как транзакцию – webduvet
Вы имеете в виду, как начать транзакцию, записать ее в mongo и в рамках этой транзакции изменить данные в redis? Действительно ли транзакции последовательно? – sleepless