Nova Patents
EP1533701B1

System and method for failover

Abstract

This record has no abstract on file.

EP1533701B1, drawing sheet 1
Sheet 1 of 16

Term

Term ended

Expired 24 November 2024, 1.8 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

26 claims: 8 independent, 18 dependent

  1. 1
    A system (50) for failover comprising:at least one client (54) selectively connectable to at least one of a primary server (62) and at least one backup server (70) via a network connection;said primary server (62) and said at least one backup server (70) being connected to each other in a normal state during which said primary server (62) processes messages from said client (54) and maintains a transaction log respective to each said message in random access memory, and during which said backup server (70) is operable to maintain a mirror image of said transaction log, said transaction logs being periodically flushed to a non-volatile storage device (66 or 74) respective to each said server (62 or 70);said client (54) being only connected to said primary server (62) in a primary-only state when said backup server (70) is unavailable during which said primary server (62) processes messages from said client (54) and maintains a transaction log respective to each said message in random access memory, and during which said primary server transaction log is flushed to said primary server non-volatile storage device (66) after each said message is processed;and, said client (54) being only connected to said backup server (70) in a backup-only state when said primary server (62) is unavailable during which said backup server (70) initially recovers a last-known state of said primary server (62) and then processes messages received from said client (54);said messages from said client (54) including outstanding messages sent from said client (54) to said primary server (62) but which were not processed by said primary server (62) due to said primary server (62) becoming unavailable;and then said backup server (70) maintains said backup server transaction log respective to each said message in random access memory, and wherein said transaction log is flushed to said backup server non-volatile storage device (74) immediately after each said message is processed.
  2. 4
    The system (50) according to any of claims 1 to 3 wherein said servers (62;70) are connectable to said clients (54) via a first network (58) and wherein said servers (62;70) are interconnectable with each other via a second network (78).
  3. 6
    The system (50) according to claims 4 or 5 wherein said first network (58) is selected from the group consisting of the Internet, a local area network and a wide area network.
  4. 11
    The system (50) according to any of claims 8 to 10 wherein said servers (62;70) include a plurality of software components comprising at least one application process that operates in a hot state to process said messages and otherwise operates in a warm state.
  5. 15
    The system (50) according to any of claims 11 to 14 wherein said software components include a replication agent executing on each of said servers (62;70) and communicating with each other to maintain said mirror image when both of said servers (62;70) are available.
  6. 16
    The system (50) according to any of claims 11 to 15 wherein said software components include a checkpoint agent executing on each of said servers (62;70) and communicating with its respective transaction log, said checkpoint agent for flushing its respective transaction log to non-volatile storage.
  7. 17
    The system (50) according to any of claims 1 to 16 wherein when said backup server (70) is processing requests, said backup server (70) is operable to assume the role of said primary server (62) when said primary server (62) becomes available and at which point said primary server (62) assumes the role of said backup server (70).
  8. 22
    A method for operating a system for failover, said system comprising at least one client selectively connectable to at least one of a primary server and at least one backup server via a network connection; said method comprising the steps of - determining in said primary server that said primary server is connected to said at least one backup server and establishing a normal state in said primary server, and in said normal state:receiving, at said primary server, requests to process messages from said at least one client connected to said primary server, processing, at said primary server, each of said messages as a plurality of discrete transactions;saving, in volatile memory associated with said primary server, a transaction record respective to each of said transactions;generating, at said primary server, a request to commit each of said transactions;mirroring said transaction record in a volatile memory associated with said at least one backup server;and, acknowledging, in said primary server, said commit request if said mirroring is successfully confirmed, periodically flushing said primary server volatile memory to a non-volatile memory associated with said primary server, periodically flushing said backup server volatile memory to a non-volatile memory associated with said at least one backup server, - establishing a primary only state in which said at least one client is connected to said primary server only and said at least one backup server is unavailable if said mirroring is not successfully conformed, and in said primary-only state: receiving, at said primary server, requests to process messages from said at least one client;processing, at said primary server, each of said messages as a plurality of discrete transactions;saving, in said volatile memory associated with said primary server, a transaction record respective to each of said transactions;generating, at said primary server, a request to commit each of said transactions;flushing said primary server volatile memory to said non-volatile memory associated with said primary server after each message is processed;- establishing a backup-only state in which said at least one client is connected to said backup server only and said primary server is unavailable, and in said backup-only state: recovering, at said backup server, a last-known state of said primary server;receiving, at said backup server, requests to process messages from said at least one client;;said requests from said client including outstanding requests sent from said client to said primary server but which were not processed by said primary server due to said primary server becoming unavailable processing, at said backup server, each of said messages as a plurality of discrete transactions;saving, in said volatile memory associated with said backup server, a transaction record respective to each of said transactions;generating, at said backup server, a request to commit said transaction;flushing said backup server volatile memory to said non-volatile memory associated with said backup server after each message is processed.
  9. 25
    The method of any of claims 22 to 24 further comprising, after said receiving step, the step of determining whether said request is a duplicate request, and if said request is a duplicate request, then returning, to said client, a previously stored result of processing said request and then omitting the remaining steps of said method prior to repeating said method.
  10. 26
    The method of any of claims 22 to 25 further comprising the steps of, when said at least one backup server initially determines said primary server is no longer available:flushing said backup server volatile memory to non-volatile memory;applying any outstanding transactions to at least a table and a queue associated with said transaction records stored on said non-volatile memory;and, sending a signal to said clients indicating said backup server is ready to process requests.