> Что такое двухфазная фиксация в микросервисах (JavaScript)

Уровень: junior · Роль: backend · Язык: JavaScript · Категория: Технические вопросы

Компании: TrendTech

Стек: Node.js, JavaScript

> Пример ответа

Двухфазная фиксация (2PC, Two-Phase Commit) - это протокол распределённых транзакций, который гарантирует атомарность операций над несколькими микросервисами. В контексте Node.js и микросервисов это означает, что все участники (сервисы) либо успешно завершают операцию, либо откатывают её, чтобы избежать частичного обновления данных.

Протокол состоит из двух фаз:

  1. Фаза подготовки (Prepare): Координатор (например, сервис-оркестратор) отправляет запрос всем участникам. Каждый участник выполняет локальные действия (например, резервирует ресурсы) и отвечает "готов" или "отказ". В Node.js это может быть реализовано через асинхронные вызовы с Promise.all.

  2. Фаза фиксации (Commit/Rollback): Если все участники ответили "готов", координатор отправляет команду "commit". Иначе - "rollback". Участники применяют или отменяют изменения.

Пример на JavaScript (упрощённый):

JAVASCRIPT
// Координатор
async function twoPhaseCommit(participants) {
// Фаза 1: подготовка
const prepareResults = await Promise.all(
participants.map(p => p.prepare())
);
if (prepareResults.every(r => r === 'ready')) {
// Фаза 2: фиксация
await Promise.all(participants.map(p => p.commit()));
} else {
await Promise.all(participants.map(p => p.rollback()));
}
}

Проблемы в микросервисах:

  • Блокировки: Участники блокируют ресурсы на время подготовки, что снижает производительность.

  • Координатор - единая точка отказа: Если координатор падает, транзакция зависает.

  • Сложность отладки: В распределённой среде трудно отследить состояние.

На практике в микросервисах на Node.js часто предпочитают Saga (компенсирующие транзакции) вместо 2PC, так как 2PC плохо масштабируется и не подходит для высоконагруженных систем.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью