🔗
Distributed Data & Transactions

Avoiding Distributed Transactions

Eventual Consistency in Spring
💡 Spring, Boot, microservices, mein, TRADITIONAL, @Transactional, EK, SINGLE, database, tak, hi, LIMITED, hai — EK, DUSRE, database, PAR, spread, EK, "SINGLE, TRANSACTION" Spring, ke, LOCAL, @Transactional, se, POSSIBLE, NAHI, hai.

@Transactional, ANNOTATION, sirf, EK, SINGLE, database, ke, ANDAR, kaam, karta hai — MULTIPLE, microservices, (aur, unki, ALAG, databases) ke, ACROSS, EK, ATOMIC, transaction, MAINTAIN, karna, Spring's, LOCAL, transaction, management, se, POSSIBLE, NAHI, hai.

Isliye, Spring, Boot, microservices, mein, "eventual, consistency" ACCEPT, ki, jaati, hai — SAGA, PATTERN, YA, EVENT-DRIVEN, updates, se, DATA, EVENTUALLY, CONSISTENT, STATE, mein, PAHUNCH, jaata, hai.

// LOCAL transaction — EK, HI, database, ke, liye, WORKS:
@Transactional
public void createOrder(Order order) {
    orderRepository.save(order);   // SAME, database
}

// CROSS-service, "transaction" — saga, pattern, chahiye, hoga
// order-service, inventory-service, ko, DIRECTLY, "transaction" mein, INCLUDE, NAHI, kar, sakta
🔗
Spring, Boot, microservices, mein, TRADITIONAL, @Transactional, EK, SINGLE, database, tak, hi, LIMITED, hai — EK, DUSRE, database, PAR, spread, EK, "SINGLE, TRANSACTION" Spring, ke, LOCAL, @Transactional, se, POSSIBLE, NAHI, hai.
1 / 2
⚡ Quick Recap
  • @Transactional, sirf, EK, single, database, ke, andar, kaam, karta, hai
  • Multiple microservices, ke, across, LOCAL, transactions, se, atomic, transaction, POSSIBLE, nahi
  • Eventual consistency, (saga, pattern) modern, approach, hai
Is page mein (2 subtopics)

Outbox, pattern, mein, EK, event, ko, database, change, ke, SAME, LOCAL, transaction, mein, EK, "outbox" table, mein, WRITE, kiya, jaata hai — EK, SEPARATE, process, PHIR, outbox, se, events, ko, RELIABLY, Kafka, ko, publish, karta hai — "DUAL, WRITE" problem, ko, SOLVE, karta hai.

@Transactional
public void createOrder(Order order) {
    orderRepository.save(order);
    outboxRepository.save(new OutboxEvent("OrderCreated", order));   // SAME, transaction
}

Ek, database, WRITE, aur, EK, message, publish, DO, SEPARATE, operations, HAIN — agar, database, WRITE, SUCCEED, hoti, hai, LEKIN, message, publish, FAIL, hoti, hai, (ya, VICE-VERSA), system, INCONSISTENT, state, mein, chala, jaata hai. Outbox, pattern, ISE, SOLVE, karta hai.