Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 393новые вакансии за сутки·54 487вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 590
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 396 кандидатов открыты к предложениям

Разместить вакансию

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

Все подборки
  • Python8 807
  • Облачные технологии6 651
  • QA вакансии2 171
  • Android1 317
  • Инженер данных867
  • Продакт-менеджер313

Разработка

  • iOS1 229
  • Backend вакансии1 199
  • AI вакансии548
  • Fullstack вакансии496
  • Frontend вакансии424
  • Mobile вакансии28

По стеку

  • Go5 239
  • Java3 132
  • Kotlin1 122
  • Node.js1 007
  • Rust852
  • .NET662
  • PHP319
  • C++268
  • C#207

DevOps и инфраструктура

  • Kubernetes3 912
  • Linux-инфраструктура2 845
  • DevOps вакансии2 680
  • Terraform / IaC2 177
  • Мониторинг и Observability1 072
  • CI/CD913
  • SRE307
  • Кибербезопасность34

Аналитика и данные

  • Аналитик данных528
  • Data Scientist433
  • Бизнес-аналитик399
  • Системный аналитик67

Другие направления

  • Проджект-менеджер105
  • UI/UX дизайн68
  • Ручное тестирование14

По регионам

  • Вакансии в США25 774
  • Вакансии в Европе10 284
  • Работа в России3 616
  • Вакансии в Канаде2 260

По формату

  • Удалённые вакансии42 533
  • Релокация в США25 774
  • Гибридная работа5 661
  • Офисная работа4 440

По уровню

  • Senior вакансии22 599
  • Middle вакансии11 490
  • Junior вакансии3 852

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise187 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме gRPC-GoВсе вопросы
gRPC-GoMiddleПроектирование систем

Что такое google.golang.org/grpc/keepalive и почему это важно для продакшен-развёртываний?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Пакет keepalive управляет HTTP/2 PING-фреймами для обнаружения мёртвых соединений. Без него соединения тихо умирают за NAT/firewall. Настройте ServerParameters, ClientParameters и EnforcementPolicy — значения должны быть согласованы.

Параметры серверной стороны

import (
	"time"
	"google.golang.org/grpc"
	"google.golang.org/grpc/keepalive"
)

serverParams := keepalive.ServerParameters{
	// Пинговать клиента если нет активности N времени
	Time:              2 * time.Hour,
	// Ждать ответа на PING не более N секунд
	Timeout:           20 * time.Second,
	// Закрыть idle-соединения через N времени
	MaxConnectionIdle: 15 * time.Minute,
	// Принудительно закрывать все соединения через N
	MaxConnectionAge:  30 * time.Minute,
	// Grace-период после MaxConnectionAge
	MaxConnectionAgeGrace: 5 * time.Second,
}

serverEnforcement := keepalive.EnforcementPolicy{
	// Минимальный интервал PING от клиента
	MinTime:             5 * time.Minute,
	// Разрешить PING без активных стримов
	PermitWithoutStream: true,
}

srv := grpc.NewServer(
	grpc.KeepaliveParams(serverParams),
	grpc.KeepaliveEnforcementPolicy(serverEnforcement),
)

google.golang.org/grpc/keepalive и его роль в production

Пакет google.golang.org/grpc/keepalive управляет механизмом HTTP/2 PING-фреймов для поддержания активности соединений и обнаружения «мёртвых» подключений. Без корректной настройки keepalive gRPC-соединения тихо умирают за NAT, firewall или cloud load balancer.

Параметры клиентской стороны

clientParams := keepalive.ClientParameters{
	// Отправлять PING если нет активности N времени
	Time:                10 * time.Second,
	// Ждать ответа на PING не более N секунд
	Timeout:             5 * time.Second,
	// Пинговать даже без активных RPC
	PermitWithoutStream: true,
}

conn, err := grpc.NewClient(
	"localhost:50051",
	grpc.WithTransportCredentials(insecure.NewCredentials()),
	grpc.WithKeepaliveParams(clientParams),
)

Почему keepalive критичен для production

  • NAT timeout: AWS NAT Gateway закрывает idle TCP-соединения через 350 секунд. Без PING клиент держит «мёртвое» соединение и получает ошибки на следующем запросе.
  • Firewall: корпоративные и облачные firewall закрывают неактивные соединения через 30–600 секунд.
  • Load balancer: AWS ALB/NLB, GCP Load Balancer имеют таймауты idle-соединений (по умолчанию 60–600 секунд).
  • Обнаружение упавшего сервера: без PING клиент не узнает о падении сервера до следующего запроса.

EnforcementPolicy — защита от PING-флуда

Если клиент шлёт PING слишком часто (меньше MinTime), сервер отправляет GOAWAY с кодом ENHANCE_YOUR_CALM. Это антиспам-механизм:

enforcement := keepalive.EnforcementPolicy{
	MinTime:             5 * time.Minute, // клиент не должен пинговать чаще
	PermitWithoutStream: false,           // запретить PING без активных стримов
}

Диагностика через channelz

import "google.golang.org/grpc/channelz/service"

// channelz показывает статистику keepalive пингов
service.RegisterChannelzServiceToServer(srv)
// Запросите /channelz/v1/channels через grpcurl

Подводные камни

  • Если клиентский Time меньше серверного MinTime, сервер отправит GOAWAY ENHANCE_YOUR_CALM и разорвёт соединение — несогласованные настройки ломают систему.
  • PermitWithoutStream: true на клиенте при PermitWithoutStream: false на сервере приведёт к принудительному закрытию соединения.
  • Слишком агрессивный Time (например, 1 секунда) создаёт лишний трафик и нагружает сервер — минимум 10 секунд для production.
  • MaxConnectionAge без MaxConnectionAgeGrace обрывает активные стримы без grace-периода.
  • Keepalive PING работает на уровне соединения, а не отдельных стримов — один PING обслуживает все RPC на соединении.
  • В Kubernetes при terminationGracePeriodSeconds меньше MaxConnectionAge клиенты не успевают переподключиться при деплое.
  • Nginx не проксирует HTTP/2 keepalive прозрачно — при использовании nginx как gRPC proxy проверьте grpc_read_timeout и grpc_send_timeout.

Частые вопросы на собеседовании

  • Как работает аутентификация в gRPC? Как реализовать TLS и mutual TLS (mTLS)?
  • Как реализовать token-based аутентификацию (JWT) в gRPC с помощью metadata?
  • Как реализовать gRPC-сервер на Go?
  • Каковы четыре типа паттернов взаимодействия gRPC? Объясните unary, server streaming, client streaming и bidirectional streaming.

Типичные ошибки

  • Давать ответ про keepalive в gRPC-Go только на уровне определения, не показывая поведение в реальном приложении.
  • Игнорировать границы ответственности вокруг темы «keepalive в gRPC-Go»: кто отменяет работу, кто владеет ресурсом и где формируется ответ клиенту.
  • Не связывать keepalive в gRPC-Go с observability, тестированием или безопасностью, когда это влияет на продакшен-поведение.

Что проверяет интервьюер

  • Точно объясняет, что именно делает keepalive в gRPC-Go и где это используется в Go-коде.
  • Связывает keepalive в gRPC-Go с корректным lifecycle запроса, отменой, конкурентностью или конфигурацией сервера там, где это уместно.
  • Не изобретает API и опирается на реальные контракты официальной документации.

Как вы знаете этот вопрос?

Проверить себя по теме gRPC-Go →

Источники

  • https://grpc.io/docs/guides/keepalive/
  • https://pkg.go.dev/google.golang.org/grpc/keepalive
←Предыдущий вопросКак реализовать health checking в gRPC с использованием стандартного протокола проверки работоспособности?Следующий вопрос→Как сравнить gRPC-Go с альтернативами по надёжности, скорости разработки, portability, performance и operational cost?

Связанные темы

gRPC-Gooperationsreliabilitytransport