gRPC 服务解析与负载均衡实现
1. 服务解析器的实现
1.1 创建解析器包
首先,我们需要创建一个新的包来存放解析器和选择器的代码。可以通过以下命令来创建:
mkdir internal/loadbalance
1.2 定义解析器结构体
在 internal/loadbalance
目录下创建 resolver.go
文件,代码如下:
package loadbalance
import (
"context"
"fmt"
"sync"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/attributes"
"google.golang.org/grpc/resolver"
"google.golang.org/grpc/serviceconfig"
api "github.com/travisjeffery/proglog/api/v1"
)
type Resolver struct {
mu sync.Mutex
clientConn resolver.ClientConn
resolverConn *grpc.ClientConn
serviceConfig *serviceconfig.