Abstract:
A method, system and computer program product are disclosed for maintaining a membership view of a distributed computing system comprising a multitude of members, wherein each of said members sends out a message indicating that said each of the members is available in the system. In one embodiment, the method comprises maintaining a first list of at least some of the members in the distributed system; and over a period of time, when one of the members sends out the message indicating that said one of the members is available in the distributed system, adding said one of the members to a second list. At defined times, the first list is replaced with the second list. In an embodiment, the method further comprises at said defined times, starting a new, empty second list.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
       [0001]    This application is a continuation of copending U.S. patent application Ser. No. 12/372,062, filed Feb. 17, 2009, the entire content and disclosure of which is hereby incorporated herein by reference. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention generally relates to distributed computing systems, and more specifically, to maintenance of a distributed system membership view. 
         [0004]    2. Background Art 
         [0005]    Distributed computing systems are complex aggregations of members or units that communicate with each other through an interconnect in order to achieve some common goal. A distributed system may comprise multiple individual processors linked in a network, or a plurality of software processes or threads operating concurrently in a coordinated environment. In a network configuration, the processors communicate with each other through a network that supports a network protocol. This protocol may be implemented using a combination of hardware and software components. In a coordinated software environment, the software processes are logically connected together through some communication medium such as an Ethernet network. Whether implemented in hardware, software, or a combination of both, the individual elements of the network are referred to individually as members, and together as a group. 
         [0006]    A robust distributed system must take into account the fact that its forming members may fail or become inaccessible at any time, while the system still needs to continue working by using the members available. Typically, each process in a distributed system maintains information, which may be updated, regarding the configuration of the system as a whole. To this purpose, processes often maintain a “view,” which is a data structure representing the membership of the distributed system (i.e., a set of processes that constitute the system, and each process in the view is a member). 
         [0007]    A soft-state protocol for the membership of a distributed system is one in which the available members are not hard-coded and known in advance when the system is initialized. Rather, the members themselves make known their presence and location to the others by means of sending a message containing this information through the interconnect, so that each member discovers the available members at some point in time. Furthermore, each member periodically resends this message every time period T so that others know that the originating member is still available. Each member is interested in knowing the other members availability at some point in time, so that they can work together to achieve whatever function the distributed system is aimed at. In order to do that, each member maintains a view of the current membership of the distributed system, formed by the locations and identities in the messages received from other members. 
         [0008]    New arriving members are added to this view when their messages are received. But members that are not available anymore should be taken out of the view. Otherwise the view would not be consistent with the members actually available; and in the long term, the view would grow without limit (as members may leave the system and integrate into it again later with a different location or identity), uselessly consuming resources at each member. However, even if messages are sent periodically, a member cannot state that another is not anymore part of the system just because a message has not arrived for one period of time T: the message may have been lost in the interconnect, or the member may be sending messages too slowly due to a high load of processing in that member at that time. An explicit message from a member telling that it is about to leave the system would not solve the problem, as we have to consider the case where the member does not work properly anymore, or cannot contact the others through the interconnect. 
         [0009]    In a typical implementation, the maintenance of the view is implemented as follows. When a message from a member arrives, the identity of the member sending the message is stored in the view together with the time of reception of the message. Periodically, with a given period T, it is verified for every member that the reception of its last message has not occurred more than a given limit number (possibly fractional) of periods ago. If, for a given member, the limit is exceeded, the member is finally considered not to be part of the distributed system. This method requires checking every single member in the view at each period, which is inefficient and may be prohibitively costly in low resource members (such as sensors) or in systems with a very large membership (such as Peer-to-peer networks). 
       SUMMARY OF THE INVENTION 
       [0010]    Embodiments of the invention provide a method, system and computer program product for maintaining a membership view of a distributed computing system comprising a multitude of members or units, where each of said members sends out a message indicating that said each of the members is available in the computing system. In one embodiment, the method comprises maintaining a first list of at least some of the members in the distributed system; and over a period of time, when one of the members sends out the message indicating that said one of the members is available in the distributed system, adding said one of the members to a second list. In this method, at defined times, the first list is replaced with the second list. 
         [0011]    In an embodiment, the method further comprises at said defined times, starting a new, empty second list; and when one of the members sends out the message indicating that said one of the members is available in the system, adding said one of the members to the first list. In an embodiment, the method may be used with a soft-state protocol for the membership of the distributed system. In such a distributed system, when the system is initialized, the members in the system do not know which of the members are available in the system. 
         [0012]    Embodiments of the invention address the fundamental problem of an application being able to detect as quickly as possible changes in the distributed system. Also, embodiments of the invention are well suited for use with soft-state membership maintenance protocols for distributed systems, and are well suited for scaling to a very large number of members. 
         [0013]    Further benefits and features of this invention will become apparent from a consideration of the following detailed description, given with reference to the accompanying drawings, which specify and show embodiments of the invention. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0014]      FIG. 1  is a block diagram of a distributed computing system in which embodiments of the present invention may be implemented. 
           [0015]      FIG. 2  shows a software instance with which embodiments of the present invention may be applied. 
           [0016]      FIG. 3  illustrates a mechanism for maintaining a distributed system membership view in accordance with embodiments of this invention. 
           [0017]      FIG. 4  illustrates a computing environment which may be used in the practice of this invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0018]    As will be appreciated by one skilled in the art, the present invention may be embodied as a system, method or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium. 
         [0019]    Any combination of one or more computer usable or computer readable medium(s) may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CDROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable medium, upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc. 
         [0020]    Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0021]    The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0022]    The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0023]      FIG. 1  shows a simplified block diagram of a distributed computing system  1  in which embodiments of the invention may be practiced. The “distributed” nature of the system  1  means that physically or logically separate processing elements cooperative to perform a single task. These elements may be physically co-located or remote from each other, depending upon the requirements of the application. In the illustrated example, the foregoing processing elements comprise a plurality of processors  3  connected to a communication interface  2 . These processors, also called “nodes”, “members”, or “participants”, communicate with each other by sending and receiving messages or packets over the communication interface  2 . 
         [0024]    An input/output device  4  schematically represents any suitable apparatus attached to the interface  2  for providing input to the distributed system  1  and receiving output from the system. Alternatively, device  4  may be attached to one of the processors  3 . Examples of device  4  are display terminals, printers, and data storage devices. 
         [0025]    It will be understood that various configurations of distributed data processing systems known to a person of ordinary skill in the art may be used for practicing embodiments of the invention. Such systems include broadcast networks, such as token-ring networks, distributed database systems and operating systems which are comprised of autonomous instances of software. 
         [0026]    In an exemplary embodiment, each of the processors  3  may comprise a hardware component such as a personal computer, workstation, server, mainframe computer, microprocessor, or other digital data processing machine. These processors  3  may be physically distributed, or not, depending upon the requirements of the particular application. Alternatively, the processors  3  may comprise software modules, processes, threads, or another computer-implemented task. Whether implemented in hardware, software, or a combination of hardware/software, the processors  3  preferably operate concurrently to perform tasks of the system  1 . 
         [0027]      FIG. 2  illustrates the structure of a software instance  6  typical of the ones operating in the distributed computing system  1 . Generally, each instance  6  has several software layers: a parallel application layer  8 , a packetizing and collective communication support layer  10 , and a transport layer  12 . The parallel application layer  8  communicates with the packetizing and collective communication support layer  10  by making collective calls at a message interface  9 . The message interface  9  is located between layers  8  and  10 . An example of the message interface  9  is provided in the industry standard Message Passing Interface (MPI). The packetizing and collective communication support layer  10  communicates with the transport layer  12  by sending and receiving packets through a packet interface  11 . To process an application in the distributed system  1 , the application layers  8  of software instances  6  operate in parallel to execute the application. 
         [0028]    As mentioned above, a robust distributed system must take into account that its forming members may fail or become inaccessible at any time, while the system still needs to continue working by using the members that are available. In order to do this, each member maintains a view of the current membership of the distributed system, formed by the locations and identities in the messages received from other members. 
         [0029]    Embodiments of this invention comprise methods, systems and computer program products to maintain efficiently a member&#39;s view of the members available in a distributed system, without changing the way existing soft-state protocols work. 
         [0030]    With reference to  FIG. 3 , in accordance with embodiments of this invention, instead of the view being comprised of a single list of available members in the system, there are two lists, referred to as working list  22  and listening list  24 . The working list includes a list of member ids, represented at  26 , and is the view of the system as the application  30  running on the distributed systems perceives it at any point in time. The listening list also includes a list of member ids, represented at  32 , and is a view comprised of the members (their location and identity) corresponding to the messages that arrive to the member. 
         [0031]    Whenever a new member is added to the listening list, it is immediately added to the working list, as represented at  34 . If the member corresponding to a received message is present in the listening list, the working list remains unchanged. Periodically, with a period equal to a number (possibly fractional) of times the period T of the messages sent by the members, the working list is discarded, the listening list becomes the new working list, and an empty listening list is set up. 
         [0032]    In one embodiment, T is greater than T o  to allow for messages to be lost. If T is, for example, three times as long as T o , then up to two messages can be lost, but the third message will ensure that the second list contains the unit sending those messages (and so will the first list, which is the list used by the applications, when substituted by the second). 
         [0033]    Through this procedure, the working list—that is, the view of the system that the application is using—remains up to date with all the members in the distributed system that have shown activity—that is, that are available. With this procedure, the working list is updated without having to perform any verification over the list, in an operation whose computation does not depend on the number of members present in the system (simply replacing the working list with the listening list, and making the listening list a new, empty list). 
         [0034]    For example,  FIG. 4  and the following discussion provide a brief general description of a suitable computing environment in which the invention may be implemented. While a general-purpose computer is described below, this is but one example, the present invention may be implemented in an environment of networked hosted services in which very little or minimal client resources are implicated, e.g., a networked environment in which the client device serves merely as a browser or interface to the World Wide Web. It should also be understood that handheld, portable, and other computing devices of all kinds are contemplated for use in connection with the present invention. 
         [0035]    Although not required, the invention can be implemented via an application-programming interface (API), for use by a developer, and/or included within the network browsing software, which will be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers, or other devices. Generally, program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations. 
         [0036]    Other well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers (PCs), server computers, hand-held or laptop devices, multi-processor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices. 
         [0037]      FIG. 4 , thus, illustrates an example of a suitable computing system environment  100  which may be used in the implementation of this invention, although as made clear above, the computing system environment  100  is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment  100  be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment  100 . 
         [0038]    With reference to  FIG. 4 , an exemplary system  100  includes a general purpose-computing device in the form of a computer  110 . Components of computer  110  may include, but are not limited to, a processing unit  120 , a system memory  130 , and a system bus  121  that couples various system components including the system memory to the processing unit  120 . The system bus  121  may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (also known as Mezzanine bus). 
         [0039]    Computer  110  typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer  110  and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer  110 . 
         [0040]    Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media. 
         [0041]    The system memory  130  includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM)  131  and random access memory (RAM)  132 . A basic input/output system  133  (BIOS), containing the basic routines that help to transfer information between elements within computer  110 , such as during start-up, is typically stored in ROM  131 . RAM  132  typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit  120 . By way of example, and not limitation,  FIG. 4  illustrates operating system  134 , application programs  134 , other program modules  136 , and program data  137 . 
         [0042]    The computer  110  may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,  FIG. 5  illustrates a hard disk drive  141  that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive  151  that reads from or writes to a removable, nonvolatile magnetic disk  152 , and an optical disk drive  155  that reads from or writes to a removable, nonvolatile optical disk  156 , such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive  141  is typically connected to the system bus  121  through a non-removable memory interface such as interface  140 , and magnetic disk drive  151  and optical disk drive  155  are typically connected to the system bus  121  by a removable memory interface, such as interface  150 . 
         [0043]    The drives and their associated computer storage media discussed above and illustrated in  FIG. 4  provide storage of computer readable instructions, data structures, program modules and other data for the computer  110 . In  FIG. 4 , for example, hard disk drive  141  is illustrated as storing operating system  144 , application programs  145 , other program modules  146 , and program data  147 . Note that these components can either be the same as or different from operating system  134 , application programs  135 , other program modules  136 , and program data  137 . Operating system  144 , application programs  145 , other program modules  146 , and program data  147  are given different numbers here to illustrate that, at a minimum, they are different copies. 
         [0044]    A user may enter commands and information into the computer  110  through input devices such as a keyboard  162  and pointing device  161 , commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit  120  through a user input interface  160  that is coupled to the system bus  121 , but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). 
         [0045]    A monitor  191  or other type of display device is also connected to the system bus  121  via an interface, such as a video interface  190 . A graphics interface  182 , such as Northbridge, may also be connected to the system bus  121 . Northbridge is a chipset that communicates with the CPU, or host-processing unit  120 , and assumes responsibility for accelerated graphics port (AGP) communications. One or more graphics processing units (GPUs)  684  may communicate with graphics interface  182 . In this regard, GPUs  184  generally include on-chip memory storage, such as register storage and GPUs  184  communicate with a video memory  186 . GPUs  184 , however, are but one example of a coprocessor and thus a variety of co-processing devices may be included in computer  110 . A monitor  191  or other type of display device is also connected to the system bus  121  via an interface, such as a video interface  190 , which may in turn communicate with video memory  186 . In addition to monitor  691 , computers may also include other peripheral output devices such as speakers  197  and printer  196 , which may be connected through an output peripheral interface  195 . 
         [0046]    The computer  110  may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer  180 . The remote computer  180  may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer  110 , although only a memory storage device  181  has been illustrated in  FIG. 4 . The logical connections depicted in  FIG. 4  include a local area network (LAN)  171  and a wide area network (WAN)  173 , but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. 
         [0047]    When used in a LAN networking environment, the computer  110  is connected to the LAN  171  through a network interface or adapter  170 . When used in a WAN networking environment, the computer  110  typically includes a modem  172  or other means for establishing communications over the WAN  173 , such as the Internet. The modem  172 , which may be internal or external, may be connected to the system bus  121  via the user input interface  160 , or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer  110 , or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,  FIG. 4  illustrates remote application programs  185  as residing on memory device  181 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. 
         [0048]    One of ordinary skill in the art can appreciate that a computer  110  or other client device can be deployed as part of a computer network. In this regard, the present invention pertains to any computer system having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units or volumes. The present invention may apply to an environment with server computers and client computers deployed in a network environment, having remote or local storage. The present invention may also apply to a standalone computing device, having programming language functionality, interpretation and execution capabilities. 
         [0049]    While it is apparent that the invention herein disclosed is well calculated to fulfill the objects stated above, it will be appreciated that numerous modifications and embodiments may be devised by those skilled in the art, and it is intended that the appended claims cover all such modifications and embodiments as fall within the true spirit and scope of the present invention.