trpc.group/trpc-go/trpc-go@v1.0.3/naming/loadbalance/README.zh_CN.md (about)

     1  # tRPC-Go 负载均衡
     2  
     3  针对每个请求进行负载均衡,而不是针对每个连接进行负载均衡,负载均衡与服务发现以及客户端完全解耦,负载均衡在内部根据不同的负载均衡策略维护自身的状态。trpc-go 提供轮训、平滑加权轮训等负载均衡算法。
     4  
     5  ## 使用
     6  通过 client.WithBalancerName("xxx") 指定使用的负载均衡算法。
     7  ```go
     8  opts := []client.Option{
     9  	client.WithBalancerName("round_robin"),
    10  }
    11  
    12  proxy := pb.NewGreeterProxy()
    13  req := &pb.HelloRequest{
    14  	Msg: "trpc-go-client",
    15  }
    16  proxy.SayHello(ctx, req, opts...)
    17  ```
    18  
    19  ## 负载均衡接口
    20  ```go
    21  // LoadBalancer 负载均衡接口,通过 node 数组返回一个 node
    22  type LoadBalancer interface {
    23  	Select(serviceName string, list []*registry.Node, opt ...Option) (node *registry.Node, err error)
    24  }
    25  ```
    26  自定义实现参考项目内部的实现。
    27