The LogCloud is a cloud-enabled transaction logging and recovery service so your cloud application nodes themselves do not need any persistent storage. All transaction logging and recovery is taken care of by the LogCloud, so application nodes can come and go without affecting transaction recovery.
This enables truly elastic OLTP in the cloud, with the recovery service in the background - taking care of cleaning up any pending transactions.
Self-healing characteristics eliminate almost every need for administration. It was never easier to do distributed transactions!
A typical LogCloud deployment is shown in the figure below. Note that LogCloud is not a single actor but rather an emergent characteristic of a particular configuration based on a shared DBMS for transaction logs.
Let's discuss the important actors and how they collaborate:
One or more transactional application nodes use the LogCloud DBMS for maintaining (and recovering) their transaction logs, because in cloud environments application-level disk access may not be available.
Embedded inside each application node is a recovery component that connects to the shared DBMS to access the transaction logs. A master election process ensures that this works without overloading everything: only one active node will do the recovery. As long as at least one node of your application cluster is online, recovery will work.
The backend resources used by the application nodes are the ones that need to be recovered by the LogCloud. So it's logical that the LogCloud needs access to those. This is trivially ensured by the recovery running inside each application node: it can access all the resource configurations that the application uses.
Most of the instructions below are done automatically if you run the example (also check its configuration files).
Make sure to setup this user account on your DBMS server first! The account also needs creation rights for tables and indexes (unless you want to setup the tables yourself first - not recommended).
Note: this is done automatically in the Spring Boot example (via Spring Boot startup config files).
Each application node must be configured to log to the LogCloud instance, by doing all of the following:
The LogCloud automatically recovers all application resources configured for XA.
Beware when you delete a resource from your application's config: you should only do so if you are sure that there are no pending (prepared) XIDs in the resource. The easiest way of ensuring this is by letting each node do a clean shutdown.
If you use transactions-remoting (transactions over REST) then you must also add the transactions-remoting-recovery jar to your classpath. This will enable HTTP recovery.
The recovery service needs the drivers to connect to each XA backend. By default, the recovery service has the following drivers in its classpath:
We reuse the driver versions from Spring Boot - so the concrete version will depend on what Spring Boot version used.
Note: in principle, any JDBC datasource can be used (including Oracle).
Try it for yourself by taking our free trial:
Free Trial