US 7,519,652 B2
Distributed application server and method for implementing distributed functions
David Charles Page, Wellington (New Zealand); and David Ian Ferry, Wellington (New Zealand)
Assigned to Open Cloud Limited, Wellington (New Zealand)
Appl. No. 10/512,344
PCT Filed Apr. 24, 2003, PCT No. PCT/NZ03/00071
§ 371(c)(1), (2), (4) Date Feb. 10, 2006,
PCT Pub. No. WO03/091892, PCT Pub. Date Nov. 06, 2003.
Claims priority of application No. 518575 (NZ), filed on Apr. 24, 2002.
Prior Publication US 2006/0195525 A1, Aug. 31, 2006
Int. Cl. G06F 15/16 (2006.01); G06F 15/177 (2006.01); G06F 7/00 (2006.01); H04L 12/42 (2006.01)
U.S. Cl. 709—201  [709/203; 709/221; 370/450; 707/10] 9 Claims
OG exemplary drawing
 
1. A fault-tolerant computer system including a distributed application server comprising:
a cluster of two or more application server nodes in a peer configuration, the application server nodes deployed on one or more computing devices,
wherein there is no single point of failure in the cluster;
a cluster membership message stream having as membership each node; and
one or more additional message streams, the one or more additional message streams each having as members one or more of the nodes,
wherein each node maintains a continuous view of the membership of each message stream it is a member of, by receiving messages on the message stream that indicate changes in stream membership as nodes join and leave the cluster;
wherein the cluster membership message stream and the one or more additional message streams each comprise a plurality of messages propagated through the associated nodes,
wherein the application server implements a plurality of distributed functions as a set of deterministic local functions in the nodes on the application server, the local functions being associated with a set of the message streams,
wherein each node provides the same set of functions as every other node, and
wherein upon receipt of an event by the cluster, the cluster processes the event using distributed functions associated with the individual nodes and using local functions that determine which of the message streams the event should be assigned based on message stream associations, a local history of events accepted and processed so far, and rules for event processing and load balancing.