HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: микросервисы, highload, высокие нагрузки, распределенные транзакции</p>
1 <p>Теги: микросервисы, highload, высокие нагрузки, распределенные транзакции</p>
2 <p>При разработке бэкенда высоконагруженных сервисов нередко используются<strong>распределенные транзакции</strong>. Рассмотрим, что это такое.</p>
2 <p>При разработке бэкенда высоконагруженных сервисов нередко используются<strong>распределенные транзакции</strong>. Рассмотрим, что это такое.</p>
3 <p>Если транзакции охватывают много физических систем либо компьютеров в сети, они называются<strong>распределенными</strong>. Например, при использовании микросервисной архитектуры транзакция распределяется между множеством сервисов, причем эти сервисы вызываются в определенной последовательности в целях завершения всей транзакции.<strong>Микросервисы</strong>, по сути, -- это распределенная система.</p>
3 <p>Если транзакции охватывают много физических систем либо компьютеров в сети, они называются<strong>распределенными</strong>. Например, при использовании микросервисной архитектуры транзакция распределяется между множеством сервисов, причем эти сервисы вызываются в определенной последовательности в целях завершения всей транзакции.<strong>Микросервисы</strong>, по сути, -- это распределенная система.</p>
4 <p>Но прежде чем продолжить, давайте рассмотрим сначала<strong>монолитную</strong>систему. Ниже -- интернет-магазин, где применяются транзакции:</p>
4 <p>Но прежде чем продолжить, давайте рассмотрим сначала<strong>монолитную</strong>систему. Ниже -- интернет-магазин, где применяются транзакции:</p>
5 <p>Взаимодействие пользователя с платформой осуществляется по следующему алгоритму: - пользователь отправляет запрос на заказ (<strong>Checkout</strong>); - платформа создает локальную транзакцию в БД; - эта транзакция охватывает много таблиц базы данных, что необходимо для обработки заказа (<strong>Process</strong>) и резервирования (<strong>Reserve</strong>) нужных товаров на складе.</p>
5 <p>Взаимодействие пользователя с платформой осуществляется по следующему алгоритму: - пользователь отправляет запрос на заказ (<strong>Checkout</strong>); - платформа создает локальную транзакцию в БД; - эта транзакция охватывает много таблиц базы данных, что необходимо для обработки заказа (<strong>Process</strong>) и резервирования (<strong>Reserve</strong>) нужных товаров на складе.</p>
6 <p>Важно отметить, что если любой из вышеописанных шагов не будет совершен, то и транзакция может откатиться, как итог -- отказ от заказа и от резервирования. Такой набор принципов называют<strong>ACID</strong>(Atomicity, атомарность; Consistency, согласованность; Isolation, изоляция; Durability, долговечность), причем выполнение гарантируется на уровне системы БД.</p>
6 <p>Важно отметить, что если любой из вышеописанных шагов не будет совершен, то и транзакция может откатиться, как итог -- отказ от заказа и от резервирования. Такой набор принципов называют<strong>ACID</strong>(Atomicity, атомарность; Consistency, согласованность; Isolation, изоляция; Durability, долговечность), причем выполнение гарантируется на уровне системы БД.</p>
7 <p>Воспользовавшись<strong>микросервисной архитектурой</strong>, можно декомпозировать систему:</p>
7 <p>Воспользовавшись<strong>микросервисной архитектурой</strong>, можно декомпозировать систему:</p>
8 <p>Таким образом, были созданы микросервисы<strong>OrderMicroservice</strong>и<strong>InventoryMicroservice</strong>, которые обладают отдельными базами данных. Теперь, когда пользователь отправляет запрос на заказ (<strong>Checkout</strong>), происходит вызов обоих микросервисов, причем каждый из них осуществляет внесение изменений в свою БД. А так как транзакция уже распределяется на несколько БД во множестве систем, ее можно назвать<strong>распределенной</strong>.</p>
8 <p>Таким образом, были созданы микросервисы<strong>OrderMicroservice</strong>и<strong>InventoryMicroservice</strong>, которые обладают отдельными базами данных. Теперь, когда пользователь отправляет запрос на заказ (<strong>Checkout</strong>), происходит вызов обоих микросервисов, причем каждый из них осуществляет внесение изменений в свою БД. А так как транзакция уже распределяется на несколько БД во множестве систем, ее можно назвать<strong>распределенной</strong>.</p>
9 <p>Вроде бы все неплохо, но при выполнении распределенных транзакций в микросервисах мы тоже можем столкнуться с определенными проблемами. О них поговорим в следующий раз.</p>
9 <p>Вроде бы все неплохо, но при выполнении распределенных транзакций в микросервисах мы тоже можем столкнуться с определенными проблемами. О них поговорим в следующий раз.</p>
10 <p><em>По материалам статьи "<a>Handling Distributed Transactions in the Microservice world</a>".</em></p>
10 <p><em>По материалам статьи "<a>Handling Distributed Transactions in the Microservice world</a>".</em></p>
11  
11