Встречается на собеседованиях • сегодня
Расскажи про опыт работы с распределенными транзакциями
В Java распределенные транзакции обычно реализуются через JTA (Java Transaction API) и менеджеры транзакций вроде Atomikos или Narayana. Основная проблема - обеспечение ACID в распределенной среде (2PC - двухфазный коммит).
Пример с JTA:
java
@Stateless
public class DistributedService {
@Resource
private UserTransaction utx;
text
@PersistenceContext(unitName = "db1")
EntityManager em1;
@PersistenceContext(unitName = "db2")
EntityManager em2;
public void transfer() throws Exception {
utx.begin();
try {
em1.persist(new Entity1());
em2.persist(new Entity2());
utx.commit();
} catch (Exception e) {
utx.rollback();
throw e;
}
}}
text
Основные проблемы:
- Производительность из-за блокировок
- Сложность отладки
- Риск частичного коммита при сбоях
Альтернативы: Saga-паттерн, eventual consistency, компенсирующие транзакции.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы