IP Library Granted Patent US 10,261,961
Granted Patent B2
US 10,261,961 · App. 15/073,236 · Granted Apr 16, 2019

Method and apparatus for replicating data across multiple data centers

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,261,961
App. No.
15/073,236
Granted
Apr 16, 2019
Kind
B2
Abstract

A method, computing device and computer program product are provided according to an example embodiment in order to replicate data, and more particularly, to replicate data between data centers while ensuring data consistency, where all participating data centers have both read and write capabilities for the data stored among them. According to an example embodiment, a replication framework including a replication client and replicator service, may include processing circuitry configured to: receive at least one revised data element at the replication client; retrieve a first version identification of a first existing data element stored in a first data center corresponding to the revised data element; cause the revised data element to be stored at a first data center, replacing the corresponding first existing data element; generate a replication event including the revised data element and the version identification; and receive, at the replicator service, the replication event.

Claims (63)

1. A replication framework comprising a plurality of data centers, a replication client and replicator service, wherein the replication framework comprises processing circuitry configured to:

receive at least one revised data element from a first data center of the plurality of data centers at the replication client;

retrieve a first version identification of a first existing data element stored in the first data center corresponding to the revised data element,

cause the revised data element to be stored at the first data center, replacing the corresponding first existing data element;

generate a replication event comprising the revised data element and the first version identification of the first existing data element;

receive, at the replicator service, the replication event;

publish, by the replicator service, the replication event to one or more subscribing data centers of the plurality of data centers including a second data center;

cause the second data center to retrieve a second version identification of a second existing data element stored in the second data center corresponding to the revised data element;

cause the second data center to store the revised data element, replacing the second existing data element stored therein in response to the second version identification of the second existing data element matching the first version identification of the first existing data element; and

cause the second data center to not store the revised data element in response to the second version identification of the second existing data element not matching the first version identification of the first existing data element.

2. The replication framework of claim 1 , wherein the processing circuitry is further configured to:

generate a first hash value in response to causing the revised data element to be stored at the first data center;

cause a second hash value to be generated in response to causing the revised data element to be stored at the second data center; and

cause the replication event to be qualified as successful in response to the first hash value being equivalent to the second hash value.

3. The replication framework of claim 2 , wherein the processing circuitry is further configured to cause the replication event to be qualified as unsuccessful in response to the first hash value being different from the second hash value.

4. The replication framework of claim 3 , wherein the processing circuitry is further configured to cause a message to be provided to the replicator service indicating that the replication event was either successful or unsuccessful.

5. The replication framework of claim 4 , wherein the processing circuitry is further configured to reprocess the replication event and publish the replication event for the second data center in response to receiving a message indicating that the replication event was unsuccessful.

6. The replication framework of claim 4 , wherein the revised data element is received at the replication client via a records interface application configured to enable creation, editing, and deletion of data records stored in the first data center, and wherein an alert is provided from the replication client via the records interface application in response to the replication event being qualified as unsuccessful with respect to the second data center.

7. The replication framework of claim 1 , wherein the processing circuitry is further configured to perform at least one of:

send, by the replication client, the replication event to a message queue, wherein the replicator service retrieves the replication event from the message queue; or

publish, by the replication client, the replication event to a service message bus to which the replicator service is subscribed.

8. A method comprising:

receiving at least one revised data element at a replication client;

retrieving a first version identification of a first existing data element stored in a first data center corresponding to the revised data element,

causing the revised data element to be stored at the first data center, replacing the corresponding first existing data element;

generating a replication event comprising the revised data element and the first version identification of the first existing data element;

receiving, at a replicator service, the replication event;

publishing, by the replicator service, the replication event to one or more subscribing data centers including a second data center;

causing the second data center to retrieve a second version identification of a second existing data element stored in the second data center corresponding to the revised data element;

causing the second data center to store the revised data element, replacing the second existing data element stored therein in response to the second version identification of the second existing data element matching the first version identification of the first existing data element; and

causing the second data center to not store the revised data element in response to the second version identification of the second existing data element not matching the first version identification of the first existing data element.

9. The method of claim 8 , further comprising

generating a first hash value in response to causing the revised data element to be stored at the first data center;

causing a second hash value to be generated in response to causing the revised data element to be stored at the second data center; and

causing the replication event to be qualified as successful in response to the first hash value being equivalent to the second hash value.

10. The method of claim 9 , further comprising:

causing the replication event to be qualified as unsuccessful in response to the first hash value being different from the second hash value.

11. The method of claim 10 , further comprising:

causing a message to be provided to the replicator service indicating that the replication event was either successful or unsuccessful.

12. The method of claim 11 , wherein in response to receiving a message indicating that the replication event was unsuccessful, reprocessing the replication event and publishing the replication event for the second data center.

13. The method of claim 11 , wherein the revised data element is received at the replication client via a records interface application configured to enable creation, editing, and deletion of data records stored in the first data center, and wherein an alert is provided from the replication client via the records interface application in response to the replication event being qualified as unsuccessful with respect to the second data center.

14. The method of claim 11 , wherein the method further comprises:

sending, by the replication client, the replication event to a message queue, wherein the replicator service retrieves the replication event from the message queue; or

publishing, by the replication client, the replication event to a service message bus to which the replicator service is subscribed.

15. A computer program product comprising a non-transitory computer readable storage medium having program code portions stored thereon, the program code portions configured, upon execution, to:

receive at least one revised data element at a replication client;

retrieve a first version identification of a first existing data element stored in a first data center corresponding to the revised data element,

cause the revised data element to be stored at the first data center, replacing the corresponding first existing data element;

generate a replication event comprising the revised data element and the first version identification of the first existing data element;

receive, at a replicator service, the replication event;

publish, by the replicator service, the replication event to one or more subscribing data centers including a second data center;

cause the second data center to retrieve a second version identification of a second existing data element stored in the second data center corresponding to the revised data element;

cause the second data center to store the revised data element, replacing the second existing data element stored therein in response to the second version identification of the second existing data element matching the first version identification of the first existing data element; and

cause the second data center to not store the revised data element in response to the second version identification of the second existing data element not matching the first version identification of the first existing data element.

16. The computer program product of claim 15 , wherein the program code instructions are further configured, upon execution, to:

generate a first hash value in response to causing the revised data element to be stored at the first data center;

cause a second hash value to be generated in response to causing the revised data element to be stored at the second data center; and

cause the replication event to be qualified as successful in response to the first hash value being equivalent to the second hash value.

17. The computer program product of claim 16 , wherein the program code instructions are further configured, upon execution, to:

cause the replication event to be qualified as unsuccessful in response to the first hash value being different from the second hash value.

18. The computer program product of claim 17 , wherein the program code instructions are further configured, upon execution, to cause a message to be provided to the replicator service indicating that the replication event was either successful or unsuccessful.

19. The computer program product of claim 18 , wherein the program code instructions are further configured to reprocess the replication event and publish the replication event for the second data center in response to receiving a message indicating that the replication event was unsuccessful.

20. The computer program product of claim 18 , wherein the revised data element is received at the replication client via a records interface application configured to enable creation, editing, and deletion of data records stored in the first data center, and wherein an alert is provided from the replication client via the records interface application in response to the replication event being qualified as unsuccessful with respect to the second data center.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Oct 5, 2022
From: BANK OF AMERICA, N.A.
To: CHANGE HEALTHCARE RESOURCES, LLC (FORMERLY KNOWN AS ALTEGRA HEALTH OPERATING COMPANY LLC); CHANGE HEALTHCARE SOLUTIONS, LLC; CHANGE HEALTHCARE PERFORMANCE, INC. (FORMERLY KNOWN AS CHANGE HEALTHCARE, INC.); CHANGE HEALTHCARE OPERATIONS, LLC; CHANGE HEALTHCARE HOLDINGS, INC.; CHANGE HEALTHCARE TECHNOLOGIES, LLC (FORMERLY KNOWN AS MCKESSON TECHNOLOGIES LLC); CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 061620/0054 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2018
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 046449/0899 →
CHANGE OF ADDRESS Recorded Mar 23, 2017
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE LLC
Reel/Frame 042082/0061 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2017
From: PF2 IP LLC
To: CHANGE HEALTHCARE LLC
Reel/Frame 041966/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2017
From: MCKESSON CORPORATION
To: PF2 IP LLC
Reel/Frame 041938/0501 →
SECURITY AGREEMENT Recorded Mar 2, 2017
From: CHANGE HEALTHCARE HOLDINGS, LLC; CHANGE HEALTHCARE, INC.; CHANGE HEALTHCARE HOLDINGS, INC.; CHANGE HEALTHCARE OPERATIONS, LLC; CHANGE HEALTHCARE SOLUTIONS, LLC; ALTEGRA HEALTH OPERATING COMPANY LLC; MCKESSON TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 041858/0482 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2017
From: MCKESSON FINANCIAL HOLDINGS UNLIMITED COMPANY
To: MCKESSON CORPORATION
Reel/Frame 041355/0408 →
CHANGE OF NAME Recorded Jan 11, 2017
From: MCKESSON FINANCIAL HOLDINGS
To: MCKESSON FINANCIAL HOLDINGS UNLIMITED COMPANY
Reel/Frame 041329/0879 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE FIRST INVENTOR PREVIOUSLY RECORDED ON REEL 038017 FRAME 0970. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 18, 2016
From: JOSE, BOBAN; KUMARASAMY, SENTHIL
To: MCKESSON FINANCIAL HOLDINGS
Reel/Frame 038169/0408 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2016
From: BOBAN, JOSE; KUMARASAMY, SENTHIL
To: MCKESSON FINANCIAL HOLDINGS
Reel/Frame 038017/0970 →