Update load-balancing.md

Addressed comments.
pull/5195/head
David G. Quintas 9 years ago
parent 8729d03fdf
commit 51073f307f
  1. 17
      doc/load-balancing.md

@ -25,9 +25,10 @@ like storage.
This thicker client places more of the load balancing logic in the client. For 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, 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 Random, etc) used to select servers from a list. In this model, a list of
would be responsible for providing a list of servers and let the client choose servers would be either statically configured in the client, provided by the
the preferred server from the list. 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 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 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 additional RPCs to get health or load information in addition to sending RPCs
for user requests. for user requests.
It would also significantly complicate the API: the new design hides the load It would also significantly complicate the client's code: the new design hides
balancing complexity of multiple layers and presents it as a simple list of the load balancing complexity of multiple layers and presents it as a simple
servers to the client. list of servers to the client.
### External Load Balancing Service ### External Load Balancing Service
The client load balancing code is kept simple and portable, implementing 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 Complex load balancing algorithms are instead provided by the load balancer. The
client relies on the load balancer to provide _load balancing configuration_ and 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 _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 optionally provide an expiration interval after which the server list should no
longer be trusted and should be updated by the balancer. 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, server list. These streams are primarily used for load reporting. For example,
Weighted Round Robin requires that the servers report utilization to the load Weighted Round Robin requires that the servers report utilization to the load
balancer in order to compute the next list of servers. balancer in order to compute the next list of servers.

Loading…
Cancel
Save