METHODS OF CREATING A VOTING STOP POINT ON A DISTRIBUTED NETWORK
A highly efficient and effective method for deciding, in the context of a distributed computer network, how many computers will participate in an initial vote if multiple computers are started in the same general time frame.
Latest Lenovo (Singapore) Pte. Ltd. Patents:
The present invention relates to distributed computer networks and to methods and arrangements for voting on resource ownership in such contexts.
BACKGROUND OF THE INVENTIONToday, in traditional cluster computing methods (i.e., in distributed computer networks as well known in the sense of that term), resources are defined statically or at system-build time. This causes problems in cases where the servers are casually connected or unreliable.
Typically, in a distributed network, tasks or resources need to be apportioned out among participating machines. To the extent a machine is operational within a network, then, it normally will send out a “ballot” during a “voting” process as a constructive step to “request” such an apportionment. Generally, a ballot contains a manifest of the resources being voted on and the vote results from each machine. All the ballots added up will decide which machine will run which resource.
In practice, when votes are undertaken on resource ownership, problems can easily present themselves. For instance, if a relatively complex voting method is used when machines are started, a problem arises in determining which machine(s) participate(s) in the initial voting, and also in finding agreement on a winner without the need for a secondary vote.
A need has been recognized in connection with overcoming such problems and deficiencies.
SUMMARY OF THE INVENTIONIn accordance with a preferred embodiment of the present invention, there is broadly contemplated a highly efficient and effective method for deciding, in the context of a distributed computer network, how many computers will participate in an initial vote if multiple computers are started in the same general time frame.
In summary, one aspect of the invention provides method of apportioning resources in a distributed network, the method comprising the steps of: incorporating a machine in network; sending a ballot from the machine; and precluding another machine associated with the network from sending a ballot beyond a temporal threshold.
Another aspect of the invention provides a system of apportioning resources in a distributed network, the system comprising: an arrangement for sending a ballot from a machine in network; and an arrangement for precluding another machine associated with the network from sending a ballot beyond a temporal threshold.
Furthermore, an additional aspect of the invention provides a program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform a method of apportioning resources in a distributed network, the method comprising the steps of: incorporating a machine in network; sending a ballot from the machine; and precluding another machine associated with the network from sending a ballot beyond a temporal threshold.
For a better understanding of the present invention, together with other and further features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying drawings, and the scope of the invention will be pointed out in the appended claims.
It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the apparatus, system, and method of the present invention, as represented in
Reference throughout this specification to “one embodiment” or “an embodiment” (or the like) means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment.
Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
The illustrated embodiments of the invention will be best understood by reference to the drawings, wherein like parts are designated by like numerals or other labels throughout. The following description is intended only by way of example, and simply illustrates certain selected embodiments of devices, systems, and processes that are consistent with the invention as claimed herein.
The systems 1 through 5 depicted in
Accordingly,
PCI local bus 50 supports the attachment of a number of devices, including adapters and bridges. Among these devices is network adapter 66, which interfaces computer system 12 to a local area network (LAN) (such as that indicated at 10 in
Computer system 12 further includes Industry Standard Architecture (ISA) bus 62, which is coupled to PCI local bus 50 by ISA bridge 64. Coupled to ISA bus 62 is an input/output (I/O) controller 70, which controls communication between computer system 12 and attached peripheral devices such as a keyboard, mouse, and a disk drive. In addition, I/O controller 70 supports external communication by computer system 12 via serial and parallel ports. As known, docking connections enable the computer system 12 to be docked at a suitable docking station, which itself may provide expanded capabilities such as a large-screen monitor, a keyboard, a mouse and a disk drive.
It should be further understood that while
Expressed generally, each machine that starts up preferably sends out an initial “Announcement” packet and then repeats that packet each second for a predetermined time (e.g., 20 seconds). This 20 seconds may be referred to as the “Discovery Phase” for each machine in question.
At the end of the Discovery Phase, each machine will next preferably send out a “Vote Request” packet that expresses the number of machines discovered by the individual machine in question. Further, the Vote Request packet will include each machine's request to vote.
If the number of machines discovered is equal to the number of Vote Request packets received, then each machine participating sends out a Ballot containing its vote results. This also constructively applies a “cut off” that precludes any more machines from sending out Ballots.
A working example is now provided, with continued reference to
The time scale depicted in
The working example is presented herebelow (and with continued reference to
Time 0
-
- System 1:
- Starts
- Sends out an initial Discovery Packet, and repeats during the Discovery Phase
- Machines System 1 has discovered during Discovery Phase: 1
- Requests to Vote received: 0
- System 1:
Time 14
-
- System 1:
- Receives Discovery Packet from System 2.
- Machines System 1 has discovered during Discovery Phase: 2
- Requests to Vote received: 0
- System 2:
- Starts
- Sends out an initial Discovery Packet, and repeats during the Discovery Phase
- Receives a Discovery Packet from System 1
- Machines System 2 has discovered during Discovery Phase: 2
- Requests to Vote received: 0
- System 1:
Time 20
-
- System 1:
- Sends out a Request to Vote after Discovery Phase complete.
- Packet contains:
- Machines System 1 has discovered during Discovery Phase: 2
- Packet contains:
- At this point System 1 has less Requests to Vote than Max number of Systems, so System 1 waits.
- Requests to Vote received: 1
- Sends out a Request to Vote after Discovery Phase complete.
- System 2:
- Receives Request to Vote from System 1.
- Request to Vote Packet is stored.
- System 1 discovered 2 machines, which is not greater than maximum machines.
- Still in Discovery Phase (The Discovery Packet now carries the Request to Vote (RtoV) packet from System 1, so that any new machines will receive the RtoV from System 1).
- Machines System 2 has discovered during Discovery Phase: 2
- Maximum machines discovered by any System during discovery: 2
- Requests to Vote received: 1
- System 1:
Time 21
-
- System 1:
- Waiting until number of vote requests received=highest number of machines discovery by a single machine
- Machines System 1 has discovered during Discovery Phase: 2
- Maximum machines discovered by any System during discovery: 2
- Requests to Vote received: 1
- System 2:
- Receives Discovery Packet from System 3
- Machines System 2 has discovered during Discovery Phase: 3
- Maximum machines discovered by any System during discovery: 2
- Requests to Vote received: 1
- System 3:
- Starts
- Sends out an initial Discovery Packet, and repeats during the Discovery Phase
- Receives Discovery Packet from System 2 (System 3 gets the RtoV data for System 1 from System 2)
- Machines System 3 has discovered during Discovery Phase: 2
- Requests to Vote received: 1
- System 1:
Time 28
-
- System 1:
- Waiting until number of vote requests received=highest number of machines discovered by a single machine
- Machines System 1 has discovered during Discovery Phase: 2
- Requests to Vote received: 1
- System 2:
- Receives Discovery Packet from System 4
- Machines System 2 has discovered during Discovery Phase: 4
- Requests to Vote received: 1
- System 3:
- Receives Discovery Packet from System 4
- Machines System 3 has discovered during Discovery Phase: 3
- Requests to Vote received: 1
- System 4:
- Starts
- Receives Discovery Packet from System 2 (System 4 gets the RtoV data for System 1 from System 2)
- Receives Discovery Packet from System 3 (System 4 gets the RtoV data for System 1 from System 3, data matches what System 2 sent, no new RtoV added.)
- Machines System 4 has discovered during Discovery Phase: 3
- Requests to Vote received: 1
- System 1:
Time 34
-
- System 1:
- Receives Request to Vote from System 2.
- System 2 discovered 4 machines; System 1 is set to wait for 4 Request to Votes before voting.
- Machines System 1 has discovered during Discovery Phase: 2
- Requests to Vote received: 2
- System 2:
- Sends out a Request to Vote after Discovery Phase complete.
- Packet contains:
- Machines discovered: 4
- Packet contains:
- Machines System 2 has discovered during Discovery Phase: 4
- Requests to Vote received: 2
- Sends out a Request to Vote after Discovery Phase complete.
- System 3:
- Receives Request to Vote from System 2.
- System 2 discovered 4 machines; System 3 is set to wait for 4 Request to Votes before voting.
- Machines System 3 has discovered during Discovery Phase: 3
- Requests to Vote received: 2
- System 4:
- Receives Request to Vote from System 2.
- System 2 discovered 4 machines; System 4 is set to wait for 4 Request to Votes before voting.
- Machines System 4 has discovered during Discovery Phase: 3
- Requests to Vote received: 2
- System 1:
Time 40
-
- System 1:
- Waiting until number of vote requests received=highest number of machines discovery by a single machine
- Machines System 1 has discovered: 2
- Requests to Vote received: 2
- System 2:
- Receives Discovery Packet from System 5
- Machines System 2 has discovered during Discovery Phase: 4
- Requests to Vote received: 2
- System 3:
- Receives Discovery Packet from System 5
- Machines System 3 has discovered during Discovery Phase: 4
- Requests to Vote received: 2
- System 4:
- Starts
- Receives Discovery Packet from System 5
- Machines System 4 has discovered during Discovery Phase: 4
- Requests to Vote received: 2
- System 5:
- Starts
- Receives Discovery Packet from System 3
- Receives Discovery Packet from System 4
- Machines System 5 has discovered during Discovery Phase: 3
- Requests to Vote received: 2
- System 1:
Time 41
-
- System 1:
- Receives Request to Vote from System 3.
- Machines System 1 has discovered during Discovery Phase: 2
- Requests to Vote received: 3
- System 2:
- Receives Request to Vote from System 3.
- Machines System 2 has discovered during Discovery Phase: 4
- Requests to Vote received: 3
- System 3:
- Sends out a Request to Vote after Discovery Phase complete.
- Packet contains:
- Machines discovered: 4
- Packet contains:
- Machines System 3 has discovered during Discovery Phase: 4
- Requests to Vote received: 3
- Sends out a Request to Vote after Discovery Phase complete.
- System 4:
- Receives Request to Vote from System 3.
- Machines System 4 has discovered during Discovery Phase: 4
- Requests to Vote received: 3
- System 5:
- Machines System 5 has discovered during Discovery Phase: 3
- Requests to Vote received: 3
- System 1:
Time 48
-
- System 1:
- Receives Request to Vote from System 4.
- Machines System 1 has discovered during Discovery Phase: 2
- Requests to Vote received: 4
- System 2:
- Receives Request to Vote from System 4.
- Machines System 2 has discovered during Discovery Phase: 4
- Requests to Vote received: 4
- System 3:
- Receives Request to Vote from System 4.
- Machines System 3 has discovered during Discovery Phase: 4
- Requests to Vote received: 4
- System 4:
- Sends out a Request to Vote after Discovery Phase complete.
- Packet contains:
- Machines discovered: 4
- Packet contains:
- Machines System 4 has discovered during Discovery Phase: 4
- Requests to Vote received: 4
- Sends out a Request to Vote after Discovery Phase complete.
- System 5:
- Receives Request to Vote from System 4.
- Machines System 5 has discovered during Discovery Phase: 3
- Requests to Vote received: 4
- In summary, the maximum number of machine discovered by any single System was 4. At this point, 4 Requests to Vote have been transmitted. This condition will cause all the machines that, at this point, have sent out a Request to Vote to start the actual vote process. System 5 has not reached the end of it's 20-second Discovery Phase and will not actually get a vote during the vote process. The vote is processed by Systems 1-4 all simultaneously sending out their ballots. A ballot contains a manifest of the resources being voted on and the vote results from each machine. All the ballots added up will decide which machine will run which resource.
- System 1:
Time 51 (This time, of course, may vary)
-
- Voting has completed. Resources are starting.
Time 52
-
- System 5 receives a list of which machines are running which resource, and Discovery Phase stops (possibly before the 20 seconds of Discovery Phase are up) due to vote being completed.
Generally speaking, and as can well be appreciated by the above working example, methods as broadly contemplated herein, in accordance with at least one presently preferred embodiment of the present invention, preferably ensure that even if systems are started up in a random or non-orderly fashion, a “cut off” point will be applied that ensures that server resources are available in a timely manner. This will thus obviate what otherwise would be a conventional scenario in which voting would be delayed unreasonably solely for the sake of including as many machines as possible.
In further recapitulation, it should be understood and appreciated that a method in accordance with at least one embodiment of the present invention can be employed in the context of essentially any number of machines or systems connected in a network (such as the network 10 indicated in
Conceivably, the methods broadly encompassed by the present invention could even apply to a network that “connects” solely one machine. In such an instance, the sole machine would “discover” itself and then submit a Ballot allowing it (with no “competition”) to take on all network resources once the Discovery Phase is complete.
In another scenario, two or more machines could be provided with a network, and then if only one machine submits a Request to Vote before the cut-off point discussed herein, solely that machine will send a Ballot and thus procure all system resources. Again, as touched on further above, a major benefit provided here is that resource procurement need not be delayed in the face of slow or delayed start-ups of other machines.
Mainly, the “one machine” scenarios are presented here to emphasize that a versatile method, as characterized in accordance with at least one embodiment of the present invention, will be able to flexibly accommodate (a) essentially any number of machines that are present in a network to begin with, including the scenario of a one-machine “network” and (b) in a network including two or more machines, essentially any number of machines that have submitted Requests to Vote before the cut-off point discussed hereabove, down to and including the case of only one such machine.
If not otherwise stated herein, it is to be assumed that all patents, patent applications, patent publications and other publications (including web-based publications) mentioned and cited herein are hereby fully incorporated by reference herein as if set forth in their entirety herein.
Although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be affected therein by one skilled in the art without departing from the scope or spirit of the invention.
Claims
1. A method of apportioning resources in a distributed network, said method comprising the steps of:
- incorporating a machine in network;
- sending a ballot from the machine; and
- precluding another machine associated with the network from sending a ballot beyond a temporal threshold.
2. The method according to claim 1, wherein said precluding step comprises applying the temporal threshold responsive to a predetermined condition.
3. The method according to claim 1, wherein:
- said incorporating step comprises incorporating a first machine in network; and
- said method further comprises incorporating a second machine in network;
- said precluding step comprising precluding the second machine from sending a ballot beyond the temporal threshold.
4. The method according to claim 3, further comprising:
- sending an announcement packet from each of the first and second machines; and
- discovering an announcement packet from one of the first and second machines at the other one of the first and second machines.
5. The method according to claim 4, further comprising the step of applying a delay period for each of the first and second machines, wherein sending a ballot is precluded during the delay period.
6. The method according to claim 5, further comprising:
- sending a request to vote from the first machine;
- precluding said step of sending a request to vote during the delay period.
7. The method according to claim 6, wherein said step of sending a request to vote:
- precedes said step of sending a ballot; and
- immediately follows the delay period.
8. The method according to claim 6, wherein said step of applying the temporal threshold comprises precluding the sending of a ballot upon a maximum number of machines discovered by any machine in network equating to a number of requests to vote collectively sent by machines in network.
9. The method according to claim 4, further comprising the step of repeatedly sending an announcement packet from each of the first and second machines during the delay period for each of the first and second machines.
10. The method according to claim 1, wherein said step of incorporating the machine in network comprises starting the machine.
11. A system of apportioning resources in a distributed network, said system comprising:
- an arrangement for sending a ballot from a machine in network; and
- an arrangement for precluding another machine associated with the network from sending a ballot beyond a temporal threshold.
12. The system according to claim 11, wherein said precluding arrangement acts to apply the temporal threshold responsive to a predetermined condition.
13. The system according to claim 11, wherein said precluding arrangement acts to preclude a second machine in network from sending a ballot beyond the temporal threshold.
14. The system according to claim 13, further comprising:
- an arrangement for sending an announcement packet from each of the first and second machines; and
- an arrangement for discovering an announcement packet from one of the first and second machines at the other one of the first and second machines.
15. The system according to claim 14, further comprising an arrangement for applying a delay period for each of the first and second machines, wherein sending a ballot is precluded during the delay period.
16. The system according to claim 15, further comprising:
- an arrangement for sending a request to vote from the first machine; and
- an arrangement for precluding sending a request to vote during the delay period.
17. The system according to claim 16 wherein said arrangement for sending a request to vote acts to send a request to vote:
- prior to a ballot being sent; and
- immediately following the delay period.
18. The system according to claim 16, wherein said arrangement for applying the temporal threshold acts to prelude the sending of a ballot upon a maximum number of machines discovered by any of the first, second and third machines equating to a number of requests to vote collectively sent by the first, second and third machines.
19. The system according to claim 14, further comprising an arrangement for repeatedly sending an announcement packet from each of the first and second machines during the delay period for each of the first and second machines.
20. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform a method of apportioning resources in a distributed network, said method comprising the steps of:
- incorporating a machine in network;
- sending a ballot from the machine; and
- precluding another machine associated with the network from sending a ballot beyond a temporal threshold.
Type: Application
Filed: Jul 31, 2007
Publication Date: Feb 5, 2009
Patent Grant number: 9477560
Applicant: Lenovo (Singapore) Pte. Ltd. (Singapore)
Inventors: Nathan J. Peterson (Raleigh, NC), Rod D. Waltermann (Rougement, NC)
Application Number: 11/831,926
International Classification: G06F 15/173 (20060101);