event-driven replication in distributed systems
In order to address problems related to geographical distribution of application instances, data distribution has been a hot topic for years. Recently, the spectacular evolution of bandwidth, frameworks and components available to build Rich Internet Applications has brought back data centralization practices. As a consequence, most database-centric applications today (e.g. business management software) are being developed using a four tier architecture: presentation logic (web tier), business logic (services), persistence services (object relational mappings and SQL variants) and database management system (one single database). While plenty of data distribution scenarios can still be found in the real world, existing solutions mainly come from DBMS providers. However, in practice it has been proven that these low level replication techniques are not really easy to use and, in most cases, they do not fit well for real-time data replication, due to the fact that: (1) highly reliable network connections are required (uninterrupted connections, in most cases) and (2) every bit has the same critical importance as any other in order to keep data integrity. Even if object-oriented replication techniques exist, such as Hibernate replication API (the well known ORM framework in Java), this paper will show that they cannot be used alone in real production environments where network connections are highly unreliable and expensive. In this short paper we will present one practical case of multiple, geographically distributed application instances, using their own local databases, while real-time synchronization over a highly unreliable and expensive network is needed. The novelty of the solution described in this paper consists in transferring the replication responsibility from database level to application logic level (business services) using a message oriented model. Unlike DBMS replication tools and techniques, our proposed model does provide the critical requirements of real-world replication needs: 1) fault-tolerance and failure recovery with event-based exception handling while still keeping the system up and running; 2) information-centric instead of bit-centric system; 3) ability to deal with numerous, unpredictable, network connections breakdowns; 4) ability to replicate data over heterogeneous platforms (both application and database level); 5) ability to run within an a multiversion application environment (different application versions on different replication nodes).
replication distributed systems service oriented architecture event-driven system message-oriented model