но при этом это делается в разных воркерах, которых может быть много. При этом после вывода ещё должна быть операция проверки транзакции и тд. Как подстраховаться от ситуации когда несколько воркеров могут начать выводить одну и ту же сумму?
Что значит "выводить"? В общем случае транзакции на уровне СУБД и явные блокировки + история всех операций.
Брать текущий баланс и отнимать определённые суммы, пока вижу так История операциий будет, а каким образом лучше блокировки сделать?
это называется не выводить а withdraw или снимать средства.
Обсуждают сегодня