Обработка распределенных транзакций | OTUS

Обработка распределенных транзакций

Highload_970x90-1801-fc90a0.png

При разработке бэкенда высоконагруженных сервисов нередко используются распределенные транзакции. Рассмотрим, что это такое.

Если транзакции охватывают много физических систем либо компьютеров в сети, они называются распределенными. Например, при использовании микросервисной архитектуры транзакция распределяется между множеством сервисов, причем эти сервисы вызываются в определенной последовательности в целях завершения всей транзакции. Микросервисы, по сути, -- это распределенная система.

Но прежде чем продолжить, давайте рассмотрим сначала монолитную систему. Ниже -- интернет-магазин, где применяются транзакции:

uquqa64v8npmzslcfcme_hhzh8q_1-20219-b6cd6b.png

Взаимодействие пользователя с платформой осуществляется по следующему алгоритму: - пользователь отправляет запрос на заказ (Checkout); - платформа создает локальную транзакцию в БД; - эта транзакция охватывает много таблиц базы данных, что необходимо для обработки заказа (Process) и резервирования (Reserve) нужных товаров на складе.

Важно отметить, что если любой из вышеописанных шагов не будет совершен, то и транзакция может откатиться, как итог -- отказ от заказа и от резервирования. Такой набор принципов называют ACID (Atomicity, атомарность; Consistency, согласованность; Isolation, изоляция; Durability, долговечность), причем выполнение гарантируется на уровне системы БД.

Воспользовавшись микросервисной архитектурой, можно декомпозировать систему:

nduiyvfoxpdxslzlv5zl2hckmzw_1-20219-a0bec1.png

Таким образом, были созданы микросервисы OrderMicroservice и InventoryMicroservice, которые обладают отдельными базами данных. Теперь, когда пользователь отправляет запрос на заказ (Checkout), происходит вызов обоих микросервисов, причем каждый из них осуществляет внесение изменений в свою БД. А так как транзакция уже распределяется на несколько БД во множестве систем, ее можно назвать распределенной.

Вроде бы все неплохо, но при выполнении распределенных транзакций в микросервисах мы тоже можем столкнуться с определенными проблемами. О них поговорим в следующий раз.

По материалам статьи "Handling Distributed Transactions in the Microservice world".

Highload_970x90-1801-fc90a0.png

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто