IP Library › Granted Patent US 9,141,685
Granted Patent B2
US 9,141,685 · App. 13/530,416 · Granted Sep 22, 2015

Front end and backend replicated storage

Inventors: Krishnan Ananthanarayanan (Bothell, WA); Sankaran Narayanan (Redmond, WA); Dhigha D. Sekaran (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F17/30578
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 9,141,685
App. No.
13/530,416
Granted
Sep 22, 2015
Kind
B2
Abstract

An existing primary data copy can be maintained on an existing primary front end server node. One or more existing secondary data copies can be maintained on one or more existing secondary front end server nodes to minor the existing primary data copy (such as by making synchronous changes to the secondary data copies). One or more existing backup data copies can be maintained on an existing backend server node to mirror the existing primary data copy (such as by making asynchronous changes to the one or more backup data copies). The existing backend server node can be accessible by one or more of the front end nodes. In response to detecting a failure of the existing primary data copy, one of the one or more secondary data copies can be designated as a new primary data copy in place of the existing primary data copy.

Claims (43)

1. A computer-implemented method, comprising:

maintaining an existing primary data copy stored on an existing primary front end server node;

receiving a data change request from a client;

in response to the data change request, making, via the primary front end server node, one or more data changes requested in the data change request to the existing primary data copy;

in response to the data change request, synchronously making the one or more requested data changes to one or more existing secondary data copies stored on one or more existing secondary front end server nodes;

in response to the data change request, asynchronously making the one or more requested data changes to a backup data copy stored on a backend server node; and

replicating the backup data copy from the backend server node to form a new primary copy on a new primary front end server node and one or more new secondary data copies on one or more new secondary front end server nodes.

2. The method of claim 1 , wherein the primary front end server node and the one or more secondary front end server nodes store the primary and secondary data copies in an application agnostic format.

3. The method of claim 1 , wherein the backend server node stores the backup data copy in an application agnostic format.

4. The method of claim 1 , further comprising detecting a failure of the primary front end server node, and in response to the failure, designating one of the one or more secondary front end server nodes as a new primary front end server node.

5. The method of claim 1 , wherein the backend server node is a first backend server node and the method further comprises, in response to the data change request, asynchronously replicating the one or more requested data changes from the first backend server node to a backup data copy on a second backend server node that is paired with the first backend server node.

6. The method of claim 5 , further comprising replicating the one or more requested data changes from the second backend server node to one or more data copies on one or more front end server nodes associated with the second backend server node.

7. The method of claim 6 , wherein the primary data copy is an existing primary data copy, and wherein the method further comprises designating one of the one or more data copies on the one or more front end server nodes associated with the second backend server node as a new primary data copy in place of the existing primary data copy.

8. The method of claim 1 , wherein the primary data copy is an existing primary data copy, and wherein the method further comprises designating one of the one or more secondary data copies as a new primary data copy in place of the existing primary data copy.

9. The method of claim 8 , wherein the method further comprises detecting a failure of the existing primary data copy, and wherein designating the one of the one or more secondary data copies as the new primary data copy is performed automatically in response to detecting the failure of the existing primary data copy.

10. The method of claim 1 , wherein the method further comprises detecting failures of the existing primary data copy and the one or more existing secondary data copies, and wherein replicating the backup data copy is performed automatically in response to detecting the failures.

11. A computer system comprising:

at least one processor; and

memory comprising instructions stored thereon that when executed by at least one processor cause at least one processor to perform acts comprising:

maintaining an existing primary data copy stored on an existing primary front end server node;

receiving a data change request from a client;

in response to the data change request, making, via the primary front end server node, one or more data changes requested in the data change request to the existing primary data copy;

in response to the data change request, making the one or more requested data changes to one or more existing secondary data copies stored on one or more existing secondary front end server nodes;

in response to the data change request, making the one or more requested data changes to a backup data copy stored on a backend server node; and

replicating the backup data copy from the backend server node to form a new primary copy on a new primary front end server node and one or more new secondary data copies on one or more new secondary front end server nodes.

12. The computer system of claim 11 , wherein the existing primary front end server node and the one or more existing secondary front end server nodes store the existing primary and secondary data copies in an application agnostic format.

13. The computer system of claim 11 , wherein the backend server node stores the backup data copy in an application agnostic format.

14. The computer system of claim 13 , wherein the format is separated into an identifier and a value.

15. The computer system of claim 11 , wherein the acts further comprise replicating at least one of the one or more existing backup data copies on the backend server node to form a new primary data copy on a new primary front end server node and one or more new secondary copies on one or more new secondary front end server nodes.

16. One or more computer-readable storage media having computer-executable instructions embodied thereon that, when executed by at least one processor, cause at least one processor to perform acts comprising:

maintaining an existing primary data copy on an existing primary front end server node;

receiving a data change request from a client;

in response to the data change request, the existing primary front end server node making one or more data changes requested in the data change request to the existing primary data copy;

in response to the data change request, synchronously making the one or more requested data changes to one or more secondary data copies on one or more secondary front end server nodes;

in response to the data change request, asynchronously making the one or more requested data changes to one or more backup data copies on a first backend server node; and

in response to the data change request, asynchronously replicating the one or more requested data changes from the first backend server node to a backup data copy on a second backend server node that is paired with the first backend server node.

17. The computer system of claim 11 , wherein the backend server node is a first backend server node and the acts further comprise:

maintaining a backup data copy on a second backend server node that is paired with the first backend server node;

maintaining one or more additional secondary data copies on one or more additional front end server nodes that are able to access the second backend server node; and

designating one of the one or more additional secondary data copies on one of the additional front end server nodes as a new primary data copy in place of the existing primary data copy.

18. The computer system of claim 17 , wherein the existing primary front end server node and the one or more existing secondary front end server nodes are in a primary pool that is a computer cluster.

19. The computer system of claim 18 , wherein the one or more additional front end servers are in a backup pool, and wherein the primary pool and the backup pool are in different datacenters.

20. The computer system of claim 11 , wherein the making of the one or more requested data changes to the one or more existing secondary data copies is done synchronously in response to the data change request, and the making of the one or more requested data changes to the backup data copy is done asynchronously in response to the data change request.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2012
From: ANANTHANARAYANAN, KRISHNAN; NARAYANAN, SANKARAN; SEKARAN, DHIGHA D
To: MICROSOFT CORPORATION
Reel/Frame 028425/0927 →
Continuity (1)
Related Publication 20130346366A1 · Dec 26, 2013