grpc的负载均衡分为client-side load balance和server-side load balance。
所谓的"客户端负载均衡"是指++主调方++ 调用++被调方++的时候,在grpc.DialContext里需要指定grpc.WithDefaultServiceConfig,这个DefaultServiceConfig默认是用pick-first策略。也支持round robin策略,需要指定。同时也可以自定义一个实现了balancer.Builder接口的策略,比如"一致性哈希"策略。
所谓的"服务端负载均衡"是指++主调方++ 不用管这些调用细节,不用管请求会落到哪个socket上。在++主调方++ 与++被调方++ 之间会有一个中间件 ,用于服务发现和转发,比如nginx,envoy,istio,都可以。对于++主调方++ 只管把请求打到中间件上,中间件会挑选一个++被调方++的实例响应请求。