Lightweigth Client
As mentioned before, transaction coordination comes at a significant cost. Driving the 2PC by issuing the callbacks
for registered Resource and Synchronization objects may sum up to several remote method invocations. Additionally,
and probably even more significant, a transaction coordinator must log the outcome of the 2PC to stable storage.
Now assume a lightweight client which calls recoverable servers on behalf of transactions, started and ended by
the client. With "lightweight client", we mean programs that run on unmanaged desktop systems. Such a
machine may show only temporarily availability; questionable IO performance and reliability of storage subsystems.
These single-user, unmanaged desktop systems should not be required to perform network functions like transaction
coordination or critical log IO to stable storage.
The xots allows lightweight clients to delegate transaction creation, management and commit processing. xots therefore
provides the TXsvc daemon. Delegation of tx coordination means that the TXsvc allows lightweight clients to begin
and terminate transactions while the responsibility for transaction coordination is delegated to the transaction
manager implemented by the TXsvc, running on a server machine. You can have as many TXsvc daemons as you want and
where you want. The diagram shows this setting.
|
|
The lightweight client still must link against the xots lib, which takes care of context propagation
and provide the Current for controlling the transaction. The transaction Coordinator, Terminator are realized in
the TXsvc, thus other recoverable servers will register with the TXsvc and receive its 2PC callbacks directly from
TXsvc.
|
|