System and method for reliable non-blocking messaging for multi-process application replication
First Claim
1. A system for providing reliable non-blocking messaging, the system comprising:
- a primary application and one or more backup applications;
one or more system memory locations configured to store said primary application;
one or more central processing units (CPUs) operatively connected to computer system memory and configured to execute said primary application on a primary host with a host operating system;
one or more interceptors configured to intercept calls to the host operating system and libraries and configured to generate replication messages based on said intercepted calls;
a messaging layer for said primary application configured to transmit said replication messages to the one or more backup applications;
one or more backup hosts each comprised of;
one or more system memory locations configured to store the one or more backup applications, one or more central processing units operatively connected to computer system memory and configured to execute the one or more backups applications on a host operating system;
one or more additional interceptors configured to intercept calls to said one or more backup host operating systems and libraries; and
an additional messaging layer for each of the one or more backup applications configured to receive said replication messages,wherein each replication message is comprised of a message sequence number, and one or more of a method identifier, a process identifier, a thread identifier, and a data-block containing data related to the intercepted call generating the replication message;
wherein an Input/Output (I/O) operation on the primary includes the result of the I/O operation and application state-changes in the corresponding replication message'"'"'s data-block; and
the one or more backup applications suppress the I/O operation and use said data-block to adjusts internal state based on internal state received from the primary application and to return the result generated by the primary application; and
wherein a process or thread operation on the primary includes the process and thread identifiers in the replication message; and
the one or more backup applications repeat the process and the thread operations corresponding to the replication message, and maintain mappings between process identifiers and thread identifiers for the primary application and the one or more backup applications.
2 Assignments
0 Petitions
Accused Products
Abstract
A system, method, and computer readable medium for reliable messaging between two or more servers. The computer readable medium includes computer-executable instructions for execution by a processing system. Primary applications runs on primary hosts and one or more replicated instances of each primary application run on one or more backup hosts. The reliable messaging ensures consistent ordered delivery of messages in the event that messages are lost; arrive out of order, or in duplicate. The messaging layer operates over TCP or UDP with our without multi-cast and broad-cast and requires no modification to applications, operating system or libraries.
55 Citations
20 Claims
-
1. A system for providing reliable non-blocking messaging, the system comprising:
-
a primary application and one or more backup applications; one or more system memory locations configured to store said primary application; one or more central processing units (CPUs) operatively connected to computer system memory and configured to execute said primary application on a primary host with a host operating system; one or more interceptors configured to intercept calls to the host operating system and libraries and configured to generate replication messages based on said intercepted calls; a messaging layer for said primary application configured to transmit said replication messages to the one or more backup applications; one or more backup hosts each comprised of;
one or more system memory locations configured to store the one or more backup applications, one or more central processing units operatively connected to computer system memory and configured to execute the one or more backups applications on a host operating system;one or more additional interceptors configured to intercept calls to said one or more backup host operating systems and libraries; and an additional messaging layer for each of the one or more backup applications configured to receive said replication messages, wherein each replication message is comprised of a message sequence number, and one or more of a method identifier, a process identifier, a thread identifier, and a data-block containing data related to the intercepted call generating the replication message; wherein an Input/Output (I/O) operation on the primary includes the result of the I/O operation and application state-changes in the corresponding replication message'"'"'s data-block; and
the one or more backup applications suppress the I/O operation and use said data-block to adjusts internal state based on internal state received from the primary application and to return the result generated by the primary application; andwherein a process or thread operation on the primary includes the process and thread identifiers in the replication message; and
the one or more backup applications repeat the process and the thread operations corresponding to the replication message, and maintain mappings between process identifiers and thread identifiers for the primary application and the one or more backup applications. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification