HTTP-клиенты Go: ошибки, повторы и общий таймаут — задачи
Задачи Go на HTTP-клиенты: отказ зависимости, повторы, request_id и общий бюджет времени.
Состав подборки: 7 задач на код. Условия и формат проверки указаны на странице каждой задачи.
Разберите маленький пример
Если каждая из трёх попыток получает отдельный таймаут 2 секунды, запрос может ждать значительно дольше двух секунд. Общий deadline ограничивает всю операцию, а попытки расходуют оставшееся время. Потерянный ответ также не доказывает, что сервер не выполнил действие.
На что обратить внимание
- Различайте сетевую ошибку, HTTP-статус и неполное тело ответа.
- Для повторяемого действия сохраните один идентификатор операции, если этого требует контракт.
- Обязательная и необязательная зависимость дают разные правила деградации.
- Проверяйте отмену контекста и прекращение лишних попыток.
Порядок практики
- HTTP-клиент поиска на Go: обработка ответа и ошибок — задача — код.
- Go: Обязательная и необязательная зависимость при отказе — задача с проверкой — код.
- Go: Один request_id для вызова и выяснения результата — задача с проверкой — код.
- Go: Один бюджет времени на попытки — задача с проверкой — код.
- Go: Не перегружаем Label при сбое — задача с проверкой — код.
- Go: Медленная зависимость и старый клиент — задача с проверкой — код.
- Go: Принять только полный ответ о последней статье — задача с проверкой — код.
Куда двигаться дальше
Задачи взяты из открытой части курса; полная работа над сервисами — платный курс микросервисов на Go.
- HTTP-клиент поиска на Go: обработка ответа и ошибок — задача
Реализуйте HTTP-адаптер поиска на Go: query-параметр, контекст, статус ответа и JSON. Самостоятельная задача с гостевой проверкой.
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker - Go: Обязательная и необязательная зависимость при отказе — задача с проверкой
Практика: Обязательная и необязательная зависимость при отказе. Обязательная и необязательная зависимость при отказе. Самостоятельное условие и проверка
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker - Go: Один requestid для вызова и выяснения результата — задача с проверкой
Практика: Один requestid для вызова и выяснения результата. Самостоятельное условие и проверка решения на Latorn.
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker - Go: Один бюджет времени на попытки — задача с проверкой
Практика: Один бюджет времени на попытки. Самостоятельное условие и проверка решения на Latorn.
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker - Go: Не перегружаем Label при сбое — задача с проверкой
Практика: Не перегружаем Label при сбое. Самостоятельное условие и проверка решения на Latorn.
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker - Go: Медленная зависимость и старый клиент — задача с проверкой
Практика: Медленная зависимость и старый клиент. Самостоятельное условие и проверка решения на Latorn.
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker - Go: Принять только полный ответ о последней статье — задача с проверкой
Практика: Go-программа делает запрос к Article API. Принять только полный ответ о последней статье. Самостоятельное условие и проверка решения на Latorn.
Микросервисы на Go: HTTP, PostgreSQL, gRPC, Kafka и Docker
