IP Library Granted Patent US 8,756,455
Granted Patent B2
US 8,756,455 · App. 13/299,165 · Granted Jun 17, 2014

Synchronized failover for active-passive applications

Inventor: Tianchi Ma (Sammamish, WA)
Assignee: Microsoft Corporation
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 8,756,455
App. No.
13/299,165
Granted
Jun 17, 2014
Kind
B2
Abstract

The present invention extends to methods, systems, and computer program products for synchronized active-passive application failover. A data connection to a single data source can be used as a synchronizations point. Interoperating instance side and data source side algorithms coordinate to transition a passive instance to an active instance within a specified period of time when a prior active instance fails. An active-passive controller can operate as an active-active module within an active-active environment to provide active-passive failover to active-passive modules. Application virtual names can be mapped to application instance electronic addresses to assist external modules in establishing application connections to active-passive applications.

Claims (78)

1. At a computer system including one or more processors and system memory, the computer system interoperating with one or more other computer systems in a distributed system, a data service running at the computer system, a plurality of instances of an active-passive application running within the distributed system, the data service storing data to control synchronization among plurality of instances of the active-passive application, the stored data including an active instance value and a last touch value, the active instance value identifying the currently active application instance for the active-passive application, the last touch value indicating a time when the currently active application instance last refreshed status, the data service exposing a status function to application instances for refreshing status for application instances, a method for refreshing the status for instances of an application, the method comprising:

an act of receiving a call at the status function, the call originating from an instance of the active-passive application, the call including an identifier value identifying calling application instance;

an act of the status function refreshing the status of the calling application instance in response to the call, including:

an act of determining if the identifier value corresponds to the active instance value;

when the identifier value corresponds to the active instance value:

an act of changing the last touch value to a current time; and

an act of returning a status of active to the calling application instance;

when the identifier value does not correspond to the active instance value:

an act of determining if an idle timeout has been exceeded based on the last touch value;

when the idle time has been exceeded:

an act of storing the identifier value as the active instance value to make the calling application instance the currently active application instance;

an act of changing the last touch value to the current time; and

an act of returning a status of active to the calling application instance; and

when the idle time has not been exceeded:

an act of retuning a status of passive to the calling application instance.

2. The method as recited in claim 1 , further comprising prior to determining if the identifier value corresponds to the active instance value, act of determining if the active instance value corresponds to a pre-specified initialization value, and

when the active instance value corresponds to a pre-specified initialization value:

an act of storing the identifier value as the active instance value to make the calling application instance the currently active application instance;

an act of changing the last touch value to the current time; and

an act of returning a status of active to the calling application instance.

3. The method as recited in claim 1 , wherein the receiving a call at the status function comprises an act of receiving a call at an active-passive failover controller, the active-passive failover controller loaded as an active-active module in an active-active environment.

4. The method as recited in claim 3 , wherein the active-passive failover controller is loaded on a cloud instance virtual machine.

5. The method as recited in claim 1 , wherein the act of determining if the identifier value corresponds to the active instance value comprises an act of determining if the identifier value matches the active instance value.

6. The method as recited in claim 1 , wherein the act of determining if an idle timeout has been exceeded based on the last touch value comprises an act of determining if the difference of subtracting the last touch value from the current time at the computer system is greater than an idle time out value.

7. The method as recited in claim 6 , wherein the idle time out value is between 10 and 30 seconds.

8. The method as recited in claim 1 , wherein the act of the status function refreshing the status of the calling application instance in response to the call comprises an act of the status function changing the status of the calling application instance from passive to active.

9. The method as recited in claim 1 , wherein the act of the status function refreshing the status of the calling application instance in response to the call comprises an act of the status function maintaining the status of the calling application instance as one of: active or passive.

10. The method as recited in claim 1 , wherein the status function is exposed through a distributed database.

11. The method as recited in claim 1 , wherein the application is a scheduler application.

12. The method as recited in claim 1 , wherein the application is a cloud based application.

13. A computer program product comprising one or more hardware storage devices having stored computer-executable instructions which, when executed by one or more processors, implement a method for refreshing a status for instances of an application in a computer system including the one or more processors and system memory, the computer system interoperating with one or more other computer systems in a distributed system, a data service running at the computer system, a plurality of instances of an active-passive application running within the distributed system, the data service storing data to control synchronization among plurality of instances of the active-passive application, the stored data including an active instance value and a last touch value, the active instance value identifying the currently active application instance for the active-passive application, the last touch value indicating a time when the currently active application instance last refreshed status, the data service exposing a status function to application instances for refreshing status for application instances, wherein the method includes:

an act of receiving a call at the status function, the call originating from an instance of the active-passive application, the call including an identifier value identifying calling application instance;

an act of the status function refreshing the status of the calling application instance in response to the call, including:

an act of determining if the identifier value corresponds to the active instance value;

when the identifier value corresponds to the active instance value:

an act of changing the last touch value to a current time; and

an act of returning a status of active to the calling application instance;

when the identifier value does not correspond to the active instance value:

an act of determining if an idle timeout has been exceeded based on the last touch value;

when the idle time has been exceeded:

an act of storing the identifier value as the active instance value to make the calling application instance the currently active application instance;

an act of changing the last touch value to the current time; and

an act of returning a status of active to the calling application instance; and

when the idle time has not been exceeded:

an act of retuning a status of passive to the calling application instance.

14. The computer program product as recited in claim 13 , wherein the method further comprises:

prior to determining if the identifier value corresponds to the active instance value, act of determining if the active instance value corresponds to a pre-specified initialization value, and

when the active instance value corresponds to a pre-specified initialization value:

an act of storing the identifier value as the active instance value to make the calling application instance the currently active application instance;

an act of changing the last touch value to the current time; and

an act of returning a status of active to the calling application instance.

15. The computer program product as recited in claim 13 , wherein receiving the call at the status function comprises an act of receiving a call at an active-passive failover controller, the active-passive failover controller loaded as an active-active module in an active-active environment and wherein the active-passive failover controller is loaded on a cloud instance virtual machine.

16. The computer program product as recited in claim 13 , wherein the application is a cloud based application.

17. A computing system comprising:

one or more processor; and

one or more hardware storage devices having stored computer-executable instructions which, when executed by the one or more processors, implement a method for refreshing a status for instances of an application in the computer, the computer system interoperating with one or more other computer systems in a distributed system, a data service running at the computer system, a plurality of instances of an active-passive application running within the distributed system, the data service storing data to control synchronization among plurality of instances of the active-passive application, the stored data including an active instance value and a last touch value, the active instance value identifying the currently active application instance for the active-passive application, the last touch value indicating a time when the currently active application instance last refreshed status, the data service exposing a status function to application instances for refreshing status for application instances, wherein the method includes:

an act of receiving a call at the status function, the call originating from an instance of the active-passive application, the call including an identifier value identifying calling application instance;

an act of the status function refreshing the status of the calling application instance in response to the call, including:

an act of determining if the identifier value corresponds to the active instance value;

when the identifier value corresponds to the active instance value:

an act of changing the last touch value to a current time; and

an act of returning a status of active to the calling application instance;

when the identifier value does not correspond to the active instance value:

an act of determining if an idle timeout has been exceeded based on the last touch value;

when the idle time has been exceeded:

 an act of storing the identifier value as the active instance value to make the calling application instance the currently active application instance;

 an act of changing the last touch value to the current time; and

 an act of returning a status of active to the calling application instance; and

when the idle time has not been exceeded:

 an act of retuning a status of passive to the calling application instance.

18. The computing system as recited in claim 17 , wherein the method further includes:

prior to determining if the identifier value corresponds to the active instance value, act of determining if the active instance value corresponds to a pre-specified initialization value, and

when the active instance value corresponds to a pre-specified initialization value:

an act of storing the identifier value as the active instance value to make the calling application instance the currently active application instance;

an act of changing the last touch value to the current time; and

an act of returning a status of active to the calling application instance.

19. The computing system as recited in claim 17 , wherein receiving the call at the status function comprises an act of receiving a call at an active-passive failover controller, the active-passive failover controller loaded as an active-active module in an active-active environment and wherein the active-passive failover controller is loaded on a cloud instance virtual machine.

20. The computing system as recited in claim 17 , wherein the application is a cloud based application.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2011
From: MA, TIANCHI
To: MICROSOFT CORPORATION
Reel/Frame 027247/0552 →
Continuity (1)
Related Publication 20130132946A1 · May 23, 2013