Abstract
Abstract: Many modern enterprise applications follow the three-tier architecture. Typical three-tier systems have some nice properties: clients are thin, application states are stored in database,; and the middle servers are stateless. This makes three-tier systems well scalable and manageable. However, it is challenging to implement end-to-end reliable and safe transactions for such applications without violating their nice properties. In this paper, we present a pragmatic end-to-end transaction protocol which ensures that every issued request will be processed exactly-once by the server(s). The idea is to use client log-based recovery and application server replication. The application server remains stateless;, all replicas play the same role and can serve client requests. Therefore, the system is well scalable and the failover is fast.