Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Golang: grpc, graphql, websocket, api

Какие альтернативные технологии клиент-серверного взаимодействия вы знаете (gRPC, GraphQL)?

Оценивает знание современных протоколов обмена данными.

Короткий ответ

Популярные альтернативы:

  • gRPC: Вызов функций между сервисами через бинарные Protobuf (быстрее REST).

  • GraphQL: Клиент сам запрашивает нужные данные (гибкость, меньше пересылок).

  • WebSockets: Двустороннее общение в реальном времени (чаты, уведомления).

Длинный ответ

Сравнение технологий:

  1. gRPC:

    • Использует HTTP/2 и Protobuf.

    • Подходит для микросервисов.

    // Определение сервиса в .proto
    service UserService {
        	rpc GetUser (UserRequest) returns (User) {}
    }
    
    // Go-сервер
    func (s *Server) GetUser(ctx context.Context, req *pb.UserRequest) (*pb.User, error) {
        	return &pb.User{Id: req.Id, Name: "Alice"}, nil
    }
  2. GraphQL:

    • Клиент задаёт структуру ответа:

      query {
          	user(id: "123") {
              	name
              	friends { name }
          	}
      }
    • Реализация в Go: библиотеки gqlgen или graphql-go.

  3. WebSockets:

    • Постоянное соединение для потоковой передачи:

      // Подключение клиента
      conn, _ := websocket.Upgrade(w, r, nil, 1024, 1024)
      conn.WriteMessage(websocket.TextMessage, []byte("Привет!"))

Вывод: Выбирайте инструмент под задачу: gRPC для производительности, GraphQL для клиентского контроля данных.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#grpc

#graphql

#websocket

#api

Подпишись на Golang Developer в телеграм