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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

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

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

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

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

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

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

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 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

Вакансии с этим навыком

  • Automation QA Engineer (Payments)