TransactionScope с Linux

#.net #linux #transactionscope #msdtc #2phase-commit

#.net #linux #transactionscope #msdtc #2 фазы-фиксация

Вопрос:

Я пытаюсь самостоятельно разместить WebAPI 2.2 в среде Linux, что можно сделать с помощью Mono, загвоздка в том, что я использую область транзакций для распределенных транзакций, так поддерживается ли она (DTC) на платформах, отличных от Windows? также, если нет, есть ли какой-либо обходной путь или альтернатива для реализации 2pc без DTC?

Ответ №1:

MSDTC поддерживается только в Windows. Альтернативой 2PC является реализация транзакции очереди сообщений. При таком подходе вы разделяете транзакцию на части и получаете одну для вывода сообщения из очереди и одну для сохранения в долговременном хранилище, таком как реляционная база данных или решение NoSQL (что бы это ни было для вашей системы). При таком подходе вы должны учитывать идемпотентность сообщения.

Подробнее об этом подходе здесь:

https://lostechies.com/jimmybogard/2013/05/09/ditching-two-phased-commits/

И у вас есть варианты относительно того, какую технологию очереди сообщений вы хотите использовать, например, RabbitMQ или ZeroMQ.