Transaction replication system and method for supporting replicated transaction-based services
First Claim
1. In a computer network that provides content-based services to users of the network, a system for providing a replicated end-user service, comprising:
- a plurality of application servers locally interconnected to one another and running respective copies of an end-user application to collectively implement the replicated end-user service, the end-user service providing user access to service content data over the network, replicated copies of the service content data stored locally on each respective application server of the plurality, the end-user service application configured to receive client transactions over the network from end-users, including client transactions that specify updates to the service content data; and
a replication service that provides generic transaction replication services for the end-user service to maintain consistency between the replicated copies of the service content data, the replication service including a replication service application that runs on at least one computer that is separate from and locally connected to the plurality of application servers, the replication service application including an application program interface (API) that enables the end-user service, and other replicated services of the network, to access the generic transaction replication services of the replication service by making API calls over the network to the replication service;
wherein individual application servers of the plurality of application servers send update transactions over the network to the replication service in response to actions of the users of the end-user service, the update transactions specifying updates to the service content data;
wherein the replication service dispatches the update transactions to each of the application servers for processing and monitors the processing of the update transactions by the application servers;
wherein the replication service and the end-user service collectively implement an update protocol in which each application server of the plurality responds to receipt of an update transaction from the replication service by immediately attempting to perform an update specified by the update transaction, so that updates to the related copies of the service content data are completed without the need for additional message traffic on the network;
wherein the application servers report respective outcomes of an update transaction to the replication service after processing the update transaction; and
Wherein the replication service applies a voting protocol to the outcomes reported by the application servers to resolve inconsistencies between the application servers and takes an application server of the plurality of the application servers off-line when the replication service determines, based on the voting protocol, that an outcome reported by the application server is inconsistent with a final outcome reached by the plurality of application servers.
2 Assignments
0 Petitions
Accused Products
Abstract
A generic transaction replication service receives update transactions from individual application servers, and forwards the update transactions for processing to all application servers that run the same service application, thereby enabling each application server to maintain a replicated copy of service content data. Upon receiving an update transaction, the application servers perform the specified update, and asynchronously report back to the transaction replication service on the "success" or "failure" of the transaction. When inconsistent transaction results are reported by different application servers, the transaction replication service uses a voting scheme to decide which application servers are to be deemed "consistent," and takes inconsistent application servers off-line for maintenance. Each update transaction replicated by the transaction replication service is stored in a transaction log. When a new application server is brought on-line, previously-dispatched update transactions stored in the transaction log are dispatched in sequence to the new server to bring the new server'"'"'s content data up-to-date.
-
Citations
21 Claims
-
1. In a computer network that provides content-based services to users of the network, a system for providing a replicated end-user service, comprising:
-
a plurality of application servers locally interconnected to one another and running respective copies of an end-user application to collectively implement the replicated end-user service, the end-user service providing user access to service content data over the network, replicated copies of the service content data stored locally on each respective application server of the plurality, the end-user service application configured to receive client transactions over the network from end-users, including client transactions that specify updates to the service content data; and a replication service that provides generic transaction replication services for the end-user service to maintain consistency between the replicated copies of the service content data, the replication service including a replication service application that runs on at least one computer that is separate from and locally connected to the plurality of application servers, the replication service application including an application program interface (API) that enables the end-user service, and other replicated services of the network, to access the generic transaction replication services of the replication service by making API calls over the network to the replication service; wherein individual application servers of the plurality of application servers send update transactions over the network to the replication service in response to actions of the users of the end-user service, the update transactions specifying updates to the service content data; wherein the replication service dispatches the update transactions to each of the application servers for processing and monitors the processing of the update transactions by the application servers; wherein the replication service and the end-user service collectively implement an update protocol in which each application server of the plurality responds to receipt of an update transaction from the replication service by immediately attempting to perform an update specified by the update transaction, so that updates to the related copies of the service content data are completed without the need for additional message traffic on the network; wherein the application servers report respective outcomes of an update transaction to the replication service after processing the update transaction; and Wherein the replication service applies a voting protocol to the outcomes reported by the application servers to resolve inconsistencies between the application servers and takes an application server of the plurality of the application servers off-line when the replication service determines, based on the voting protocol, that an outcome reported by the application server is inconsistent with a final outcome reached by the plurality of application servers. - View Dependent Claims (2, 3, 4, 5)
-
-
6. In a computer network, an extinsible architecture for providing replicated services to end users of the network, the architecture comprising:
-
a replication service that provides generic transaction replication services to other services of the network, the replication service running on at least one computer of the network and providing a software interface that enables the other services to use the generic transaction replication services; a first end-user service that provides a first content-based service to end users of the network, the first end-user service running on, and storing replicated copies of a first dataset on, a first plurality of servers that are interconnected by the network, the first end-user service configured to implement a client side of the software interface, and configured to use the replication service to replicate transactions among the first plurality of servers to maintain consistency between the replicated copies of the first dataset; and a second end-user that provides a second content-based service to end-users of the network, the second content-based service distinct from the first content-based service, the second end-user service running on, and storing replicated copies of a second dataset on, a second plurality of servers that are interconnected by the network, the second plurality of servers different from the first plurality of servers, the second end-user service configured to implement the client side of the software interface, and configured to use the replication service to replicate transactions among the second plurality of servers to maintain consistency between the replicated copies of the second dataset; wherein the replication service selectively takes individual servers of at least the first plurality of servers off-line when an inconsistency occurs between the replicated first datasets, the replication service thereby preventing end users from accessing inconsistent copies of the first dataset. - View Dependent Claims (7, 8, 9)
-
-
10. A computer-readable medium having strored thereon an executable service application that provides generic transaction replication services, the service application configured to run on a computer of a network in association with an end-user service in which service content data is replicated across a plurality of servers, the service application configured to communicate with, and to provide the generic transaction services to, the end-user service over the network via an application program interface (API) of the service application, the service application further configured to process update transactions received from the end-user service, and to dispatch the update transactions over the network to the plurality of servers for processing, the update transactions specifying updates to the service content data, wherein the service application responds to receipt of an update transaction from the end-user service by at least:
- (a) recording the update transaction within a transaction log on the computer;
(b) dispatching the update transaction to each of the plurality of servers for processing;
(c) monitoring the processing of the update transaction by each of the plurality of servers; and
(d) Automatically taking at lest one server of the plurality of servers off-line when it is determined in step C that the at least one server has reached a transaction-processing outcome that is different from a final transaction-processing outcome reached by the plurality of servers. - View Dependent Claims (11, 12)
- (a) recording the update transaction within a transaction log on the computer;
-
13. A client-server type service that provides clients with read/write access to service content data, the service comprising:
-
a group of locally-interconnected servers, each server of the group locally storing a respective copy of the service content data, the servers of the group configured to receive client requests over a network, the client requests including client update requests that specify modifications to the service content data; and a server application, the server application separately running on each server of the group and providing at least client access to the service content data, the server application configured to, on each respective server group; (a) receive the client update requests and generate update transactions therefrom, (b) forward the update transactions over the network to a transaction replication service for replication across the group, the transaction replication service separate from the client-server service and running on at least one computer that is not part of the group, and (c) receive and process update transactions dispatched to the group over the network by the transaction replication service, to modify a respective copy of the service content data, wherein the server application is further configured to, on each respective server of the group, return a transaction status code to the transaction replication service over the network, the transaction status code indicating, for the respective server, at least a success or failure of an update transaction; and Wherein the transaction replication service selectively takes at least one server of the group of servers off-line when it is determined that the at least one server was reached an outcome that is inconsistent with a final outcome reached by the group servers. - View Dependent Claims (14, 15, 16)
-
-
17. A transaction replication system for performing generic transaction replication services for groups of application servers, each application server of a group running a transaction-based service application that is adapted to use the transaction replication system to pass service-specific information between the servers of the group as transactions, the system comprising:
-
a replication computer, the replication computer separate from and locally connected to the application servers of the group by a local area network and configured to receive transactions over the network from the application servers of the group, the replication computer configured to maintain a transaction log, the transaction log containing transactions previously received by the replication computer from individual application servers of the group; and a replication service application running on the replication computer to implement a generic transaction replication service, the transaction replication service configured to replicate received transactions by forwarding the received transactions to every application server of the group for processing; the transaction replication service further configured to, when a transaction is received by the replication computer from one of the applications servers of the group, do each of; (a) store the transaction in the transaction log; (b) forward the transaction to each application server of the group for immediate processing, (c) receive a status code from each application server of the group, the status code indicating, for each respective application server of the group, whether or not the transaction was successfully processed, (d) determine a final outcome of the transaction, and (e) take off-line an application server of the group which is inconsistent with the final outcome reached by the group.
-
-
18. A method of rapidly processing client update requests which specify updates to server data, replicated copies of the server data stored on respective servers of a group, the method comprising the steps of:
-
(a) on at least one server of the group, doing each of; (a1) receiving client update requests and generating update transactions therefrom, the update transactions specifying updates to the server data, (a2) forwarding the update transactions over a network to a transaction replication service for replication across the group, (a3) responding to an update transaction received over the network from the transaction replication service by attempting to immediately process the update transaction, to update a replicated copy of the server data, without first generating a response message on the network, so the dispatched update transactions are completed in a single phase, and (a4) returning a status code to the transaction replication service to indicate a "success" or a "failure" of an update transaction processed in step (a3); and (b) at a computer running a replication service application that implements the transaction replication service, doing each of; (b1) receiving update transactions from the servers of the group, (b2) dispatching the update transactions received in step (b1) to the servers of the group, (b3) receiving status codes from the servers of the group and determining a final outcome of a corresponding transaction therefrom, and (b4) when a server of the group is inconsistent with the final outcome, automatically taking the inconsistent server off-line to remove the inconsistency. - View Dependent Claims (19, 20)
-
-
21. In a computer network in which each server of a plurality of servers stores a respective copy of a dataset, a method of updating copies of the dataset stored by the plurality of servers, the method comprising the steps of:
-
sending an update transaction over the network from a computer to the plurality of servers, the update transaction specifying an update to the dataset, the computer separate from the plurality of servers and running software that manages updates to the dataset; at each server of the plurality, responding to the update transaction by (i) attempting to perform the update, without generating message traffic on the network prior to said attempting, and (ii) after attempting to perform the update, returning a report message over the network to the computer, the report message indicating an outcome of the update transaction; and When the report messages returned by the plurality of servers indicate that an inconsistency exists between copies of the dataset, applying a voting protocol to selectively takes at least one server of the plurality of servers off-line to resolve the inconsistency.
-
Specification