В одной из моих служб, которая оказывается моим балансировщиком нагрузки, я получаю следующую ошибку при вызове метода сервера в одной из моих развернутых служб:
Ошибка RPC: код = не реализовано desc = неизвестный сервис
fooService.FooService
У меня есть несколько других служб, настроенных с помощью gRPC, и они работают нормально. Похоже, что это именно тот, и мне интересно, потому ли это, что это loadbalancer?
func GetResult(w http.ResponseWriter, r *http.Request) {
conn, errOne := grpc.Dial("redis-gateway:10006", grpc.WithInsecure())
defer conn.Close()
rClient := rs.NewRedisGatewayClient(conn)
result , errTwo := rClient.GetData(context.Background(), &rs.KeyRequest{Key: "trump", Value: "trumpVal"}, grpc.WithInsecure())
fmt.Fprintf(w, "print result: %s \n", result) //prints nil
fmt.Fprintf(w, "print error one: %v \n", errOne) // prints nil
fmt.Fprintf(w, "print error two: %s \n", errTwo) // prints error
}
Ошибка говорит о том, что не существует службы с именем fooService.FooService, которая имеет значение true, поскольку имя DNS для службы, которую я вызываю, называется foo-service. Однако это точно такая же настройка для других моих служб, которые используют gRPC и работают нормально. Также мои прото-файлы правильно настроены, так что это не проблема.
сервер, которому я звоню:
func main() {
lis, err := net.Listen("tcp", ":10006")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
grpcServer := grpc.NewServer()
newServer := &RedisGatewayServer{}
rs.RegisterRedisGatewayServer(grpcServer, newServer)
if err := grpcServer.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
Функция, к которой я пытаюсь получить доступ от клиента:
func (s *RedisGatewayServer) GetData(ctx context.Context, in *rs.KeyRequest)(*rs.KeyRequest, error) {
return in, nil
}
Мои файлы docker и yaml верны также с правильными именами и портами.