aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/load-balancing.md
diff options
context:
space:
mode:
authorGravatar David G. Quintas <dgq@google.com>2016-02-12 14:07:42 -0800
committerGravatar David G. Quintas <dgq@google.com>2016-02-12 14:07:42 -0800
commit51073f307fb72c8d55fdf699f3a98c5cf695a26f (patch)
treeb00880cf9c4a422b4990336644d9ff90657d311e /doc/load-balancing.md
parent8729d03fdf47b535012312fc4b983b0b27b49918 (diff)
Update load-balancing.md
Addressed comments.
Diffstat (limited to 'doc/load-balancing.md')
-rw-r--r--doc/load-balancing.md17
1 files changed, 9 insertions, 8 deletions
diff --git a/doc/load-balancing.md b/doc/load-balancing.md
index b1a27057ab..681be02a72 100644
--- a/doc/load-balancing.md
+++ b/doc/load-balancing.md
@@ -25,9 +25,10 @@ like storage.
This thicker client places more of the load balancing logic in the client. For
example, the client could contain many load balancing policies (Round Robin,
-Random, etc) used to select servers from a list. In this model, a load balancer
-would be responsible for providing a list of servers and let the client choose
-the preferred server from the list.
+Random, etc) used to select servers from a list. In this model, a list of
+servers would be either statically configured in the client, provided by the
+name resolution system, an external load balancer, etc. In any case, the client
+is responsible for choosing the preferred server from the list.
One of the drawbacks of this approach is writing and maintaining the load
balancing policies in multiple languages and/or versions of the clients. These
@@ -36,14 +37,14 @@ to server communication so the client would need to get thicker to support
additional RPCs to get health or load information in addition to sending RPCs
for user requests.
-It would also significantly complicate the API: the new design hides the load
-balancing complexity of multiple layers and presents it as a simple list of
-servers to the client.
+It would also significantly complicate the client's code: the new design hides
+the load balancing complexity of multiple layers and presents it as a simple
+list of servers to the client.
### External Load Balancing Service
The client load balancing code is kept simple and portable, implementing
-straightforward algorithms (ie, Pick First, Round Robin) for server selection.
+well-known algorithms (ie, Round Robin) for server selection.
Complex load balancing algorithms are instead provided by the load balancer. The
client relies on the load balancer to provide _load balancing configuration_ and
_the list of servers_ to which the client should send requests. The balancer
@@ -76,7 +77,7 @@ specific list of “picked” servers in a particular order. The balancer can
optionally provide an expiration interval after which the server list should no
longer be trusted and should be updated by the balancer.
-The load balancer is may open reporting streams to each server contained in the
+The load balancer may open reporting streams to each server contained in the
server list. These streams are primarily used for load reporting. For example,
Weighted Round Robin requires that the servers report utilization to the load
balancer in order to compute the next list of servers.