Встречается на собеседованиях • сегодня

Как избежать разделения операций по шардам

Использование транзакций или распределённых блокировок (например, через ZooKeeper или Redis) для координации операций между шардами.

Пример с транзакциями в Spring:

java
@Transactional
public void transferMoney(Account from, Account to, BigDecimal amount) {
    from.debit(amount);
    to.credit(amount);
    accountRepository.saveAll(List.of(from, to));
}

Альтернативы:

  1. Локализация данных – хранить связанные сущности в одном шарде (например, по customerId).
  2. Saga-паттерн – компенсирующие транзакции для отката изменений.
  3. Event Sourcing – запись событий вместо прямых изменений.

Важно: минимизировать кросс-шардовые операции, т.к. они снижают производительность.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы