DEV Community

Vipul Kumar
Vipul Kumar

Posted on

1

Understanding Two-Phase Commit in Microservices

πŸ”„ Protocol Overview β€” The Two-Phase Commit (2PC) protocol is a distributed algorithm used to ensure that a transaction is either committed or aborted across all participating nodes in a distributed system.

1️⃣ Prepare Phase β€” In this phase, the coordinator sends a prepare request to all participants. Each participant prepares to commit the transaction and logs the changes but does not commit yet. They respond with a vote to commit or abort.

2️⃣ Commit Phase β€” If all participants vote to commit, the coordinator sends a commit request to all. If any participant votes to abort, the coordinator sends an abort request. Participants then commit or abort based on the coordinator's decision.

βš–οΈ Consistency β€” 2PC ensures strict consistency across services by coordinating a global commit, making it suitable for scenarios requiring atomic transactions.

⚠️ Challenges β€” The protocol can introduce performance bottlenecks and single points of failure, especially if the coordinator fails during the process.

Protocol Phases

πŸ” Prepare Phase β€” The coordinator sends a prepare request to all participants. Participants prepare the transaction, log changes, and respond with a commit or abort vote.

πŸ”— Commit Phase β€” If all votes are to commit, the coordinator sends a commit request. If any vote is to abort, an abort request is sent. Participants act based on the coordinator's final decision.

πŸ•’ Timing β€” The protocol requires careful timing and coordination to ensure all participants are ready to commit simultaneously.

πŸ“œ Logging β€” Participants log their actions during the prepare phase to ensure they can commit or abort as instructed.

πŸ”„ Rollback β€” If any participant votes to abort, the entire transaction is rolled back to maintain consistency.

Advantages and Disadvantages

βœ… Advantage - Consistency β€” 2PC provides strict consistency, ensuring all nodes agree on the transaction outcome.

❌ Disadvantage - Performance β€” The protocol can cause performance bottlenecks due to the need for coordination and potential delays.

❌ Disadvantage - Single Point of Failure β€” The coordinator is a single point of failure, which can disrupt the entire transaction process if it fails.

βœ… Advantage - Atomicity β€” Ensures that a transaction is fully completed or not at all, maintaining data integrity.

❌ Disadvantage - Complexity β€” Implementing 2PC can be complex, requiring careful management of transaction states and logs.

Use Cases

🏦 Bank Transfers β€” Ensures atomic transfer of funds between accounts in different banking systems.

πŸ—„οΈ Distributed Databases β€” Coordinates commits across multiple database nodes to ensure data consistency.

πŸ“¦ Inventory Management β€” Synchronizes stock levels across different locations or systems to prevent overselling.

πŸ’³ Payment Processing β€” Ensures all parts of a payment transaction are completed or none at all.

πŸ“Š Financial Transactions β€” Used in scenarios where financial data integrity is critical and must be maintained across systems.

Read On LinkedIn or WhatsApp

Follow me on: LinkedIn | WhatsApp | Medium | Dev.to | Github

Top comments (0)

Image of Docusign

πŸ› οΈ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more