Auto load transfer in geographically distributed systems
First Claim
1. A computer system comprising:
- one or more nodes, wherein each node of the one or more nodes is a computational resource and is programmed to store district data identifying one or more districts of a geographical region for which the node is responsible for processing requests;
one or more non-transitory computer readable storage media that are communicatively coupled to the one or more nodes and store one or more sequences of program instructions which, when executed by a particular node of the one or more nodes, causes the particular node to perform;
receiving one or more requests associated with the one or more districts for which the particular node is responsible and processing the one or more requests;
periodically updating the district data to reflect one or more respective districts for which each of one or more neighboring nodes of the particular node is responsible;
periodically determining whether current load of the particular node has dropped below a lower bound value and in response to determining that the current load has dropped below the lower bound value initiating a termination action;
periodically determining whether the current load has risen above an upper bound value and in response to determining that the current load has risen above the upper bound value initiating a spawning action;
periodically balancing load with the one or more neighboring nodes by exchanging a set of districts with the one or more neighboring nodes.
6 Assignments
0 Petitions
Accused Products
Abstract
In an approach, load balancing is performed in a distributed system of nodes representing computational resources such as clients, servers, server clusters, virtual machines, and so forth. Each node within the distributed system is responsible for processing requests associated with one or more districts in a geographical area. In order to perform load balancing each node is programmed or configured to autonomously perform a set of actions on a periodic basis which includes checking neighbors for updates, determining whether to spawning a new node, determining whether to terminate, and balancing load with neighbors. As a result, the number of nodes and the districts for which each node is responsible dynamically changes over time to minimize the load placed on each node and to constrain the number of nodes that need to be active within the distributed system to reduce resource costs.
-
Citations
24 Claims
-
1. A computer system comprising:
-
one or more nodes, wherein each node of the one or more nodes is a computational resource and is programmed to store district data identifying one or more districts of a geographical region for which the node is responsible for processing requests; one or more non-transitory computer readable storage media that are communicatively coupled to the one or more nodes and store one or more sequences of program instructions which, when executed by a particular node of the one or more nodes, causes the particular node to perform; receiving one or more requests associated with the one or more districts for which the particular node is responsible and processing the one or more requests; periodically updating the district data to reflect one or more respective districts for which each of one or more neighboring nodes of the particular node is responsible; periodically determining whether current load of the particular node has dropped below a lower bound value and in response to determining that the current load has dropped below the lower bound value initiating a termination action; periodically determining whether the current load has risen above an upper bound value and in response to determining that the current load has risen above the upper bound value initiating a spawning action; periodically balancing load with the one or more neighboring nodes by exchanging a set of districts with the one or more neighboring nodes. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer system comprising:
-
one or more diner clients, wherein each diner client of the one or more diner clients is communicatively coupled to a respective non-transitory computer-readable storage medium storing one or more instructions which, when executed by a particular diner client of the one or more diner clients, causes the particular diner client to perform; sending a message to an order receiving server that represents an order for food delivery; wherein the order receiving server is communicatively coupled to a non-transitory computer-readable storage medium storing one or more instructions which, when executed by the order receiving server, causes the order receiving to perform; receiving the message from the particular diner client, and storing an entry identifying the order for food delivery in an order database; one or more virtual machines executing within an order assignment server cluster, wherein each virtual machine of the one or more virtual machines has accessed to respective district data identifying one or more districts of a geographical region for which the virtual machine is responsible for processing requests, wherein the order assignment server cluster is communicatively coupled to one or more non-transitory computer-readable storage mediums that each store one or more instructions which, when executed by a particular virtual machine of the one or more virtual machines, causes the particular virtual machine to perform; retrieving one or more orders for food delivery from the order database based on a respective delivery address associated with each of the one or more orders and district data associated with the particular virtual machine and assigning each of the one or more orders for food delivery to a respective driver client of one or more driver clients; periodically updating the district data to reflect one or more respective districts for which each of one or more neighboring virtual machines of the particular virtual machine is responsible; periodically determining whether current load of the particular virtual machine has dropped below a lower bound value and in response to determining that the current load has dropped below the lower bound value initiating a termination action; periodically determining whether the current load has risen above an upper bound value and in response to determining that the current load has risen above the upper bound value initiating a spawning action; periodically balancing load with the one or more neighboring virtual machines by exchanging a set of districts with the one or more neighboring virtual machines; wherein the one or more driver clients are each communicatively coupled to a respective non-transitory computer-readable storage medium storing one or more instructions which, when executed by a particular driver client of the one or more driver clients causes the particular driver client to perform; receiving an assignment of an order sent by a virtual machine of the one or more virtual machines and, in response to receiving the assignment, displaying one or more details of the order within a user interface of the particular driver client.
-
-
13. A method comprising:
-
storing, by a particular node, district data identifying one or more districts of a geographical region for which the particular node is responsible for processing requests, wherein the particular node is a member of one or more nodes, wherein each node of the one or more nodes represents a computational resource; receiving, by the particular node, one or more requests associated with the one or more districts for which the particular node is responsible and processing the one or more requests; periodically updating, by the particular node, the district data to reflect one or more respective districts for which each of one or more neighboring nodes of the particular node is responsible; periodically determining, by the particular node, whether current load of the particular node has dropped below a lower bound value and in response to determining that the current load has dropped below the lower bound value initiating a termination action; periodically determining, by the particular node, whether the current load has risen above an upper bound value and in response to determining that the current load has risen above the upper bound value initiating a spawning action; periodically balancing load, by the particular node, with the one or more neighboring nodes by exchanging a set of districts with the one or more neighboring nodes. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A method comprising:
-
storing, by a particular diner client, district data identifying one or more districts of a geographical region for which the particular diner client is responsible for processing requests, wherein the particular diner client is a member of a plurality of diner clients; sending a message to an order receiving server that represents an order for food delivery; wherein the order receiving server is communicatively coupled to a non-transitory computer-readable storage medium storing one or more instructions which, when executed by the order receiving server, causes the order receiving to perform; receiving the message from the particular diner client, and storing an entry identifying the order for food delivery in an order database; one or more virtual machines executing within an order assignment server cluster, wherein each virtual machine of the one or more virtual machines has accessed to respective district data identifying one or more districts of a geographical region for which the virtual machine is responsible for processing requests, wherein the order assignment server cluster is communicatively coupled to one or more non-transitory computer-readable storage mediums that each store one or more instructions which, when executed by a particular virtual machine of the one or more virtual machines, causes the particular virtual machine to perform; retrieving one or more orders for food delivery from the order database based on a respective delivery address associated with each of the one or more orders and district data associated with the particular virtual machine and assigning each of the one or more orders for food delivery to a respective driver client of one or more driver clients; periodically updating the district data to reflect one or more respective districts for which each of one or more neighboring virtual machines of the particular virtual machine is responsible; periodically determining whether current load of the particular virtual machine has dropped below a lower bound value and in response to determining that the current load has dropped below the lower bound value initiating a termination action; periodically determining whether the current load has risen above an upper bound value and in response to determining that the current load has risen above the upper bound value initiating a spawning action; periodically balancing load with the one or more neighboring virtual machines by exchanging a set of districts with the one or more neighboring virtual machines; wherein the one or more driver clients are each communicatively coupled to a respective non-transitory computer-readable storage medium storing one or more instructions which, when executed by a particular driver client of the one or more driver clients causes the particular driver client to perform; receiving an assignment of an order sent by a virtual machine of the one or more virtual machines and, in response to receiving the assignment, displaying one or more details of the order within a user interface of the particular driver client.
-
Specification