Client load balancing
The main advantage of client load balancing is obviously its performance. No middle agents between client and servers makes it optimal for low latency constraints.
As you can imagine, however, client load balancing adds more complexity to the architecture. The client is much more sophisticated, since it needs to apply strategies to equilibrate the traffic (Round Robin or others).
The client will need to keep track on the health of each backend, in order to redirect traffic elsewhere if a backend malfunction is detected. This would be the thick client approach.
Another alternative would be to use the Lookaside Load Balancer, which is kind of a Zookeeper/Consul/Eureka who communicates the client that is the best backend server to communicate with. A good example on using Zookeeper as a Lookaside LB, using a Round Robin strategy in Java, would be on https://github.com/makdharma/grpc-zookeeper-lb.