mardi 31 janvier 2017

Database Replication Pattern at Application level

I would like to get some views on a resilience pattern we are building.

we are building Spring Data containerised applications, with Docker on Mesosphere, and we are planning to build a library which would replace the need for Oracle Golden Gate (due to the cost).

The role of that Library, would be to replicate data across all the Oracle DB nodes (so it has to be node aware...not sure how yet), and it would do so according to a predefined node order. Which means always write to Node 1 and then to Node 2.

If a node fails, then a Circuit Breaker (also part of that Library) would

  1. Create a temporary commit log for the failed node
  2. Notify all other containers of the failure
  3. Write to the commit log for this node

A Reconciliation Container would, in the background, do the following

  1. regularly poll for the database to check if it is up
  2. Notify application containers when the node is back up
  3. apply inserts from the commit log to the recovered node

This pattern should also be configurable, such that if we move to the cloud and decide to use Cassandra, then we would rely in Cassandra's replication mechanism.

I was thinking of looking at the Spring Data code and make the changes there.

Is there somebody out there who has attempted something like this?

Any advice you could provide.

Cheers Kris

Aucun commentaire:

Enregistrer un commentaire