diff --git a/doc/load-balancing.md b/doc/load-balancing.md index b1a27057abe..681be02a72f 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.