Смотря где на сервере хранятся данные о занятых местах и как происходит бронирование. Например, если таблица мест в базе, и для занятия следующего случайного из ноды нужно сделать два запроса:
1) Выбрать случайное
2) Пометить выбранное занятым
То между этими запросами может втиснуться запрос от другого пользователя и все испортит. А вот если эта операция атомарная, т.е. отправляется в СУБД и 1 и 2 вместе и возвращается номер случайного места, то все будет ок. Но лучше всего в этой ситуации, сразу забрать все места в память в массив, один раз их там перемешать случайным образом. arr.sort(function () { return Math.random() - 0.5; }); и потом брать по запросу один arr.pop(); и если сервер в одном потоке, то это гарантирует, что ни кто не возьмет один и тот же. А вот сохранять в базу можно уже в отложенном режиме. Если поток запросов очень большой, то сложнее, тут уже одним потоком не обойтись, тут нужно делить массив на блоки и держать каждый блок в отдельном процессе или отдельном сервере.