Senior
24
Как интерсепторы помогали наблюдать за системой? Что конкретно они делали?
Компании, где спрашивали
Финтехробот
Ответ от нейросети
sobes.tech AI
Интерсепторы в Go (например, в gRPC) позволяют перехватывать вызовы до того, как они достигнут основной логики обработки запроса. Это даёт возможность наблюдать за системой, собирая метрики, логи, трассировки и проверяя контекст.
Что конкретно они делают:
- Логируют входящие запросы и исходящие ответы.
- Измеряют время выполнения каждого вызова.
- Добавляют или проверяют метаданные в контексте.
- Обрабатывают ошибки и формируют стандартизированные ответы.
Пример простого интерсептора для логирования времени выполнения запроса:
func UnaryInterceptor(
ctx context.Context,
req interface{},
info *grpc.UnaryServerInfo,
handler grpc.UnaryHandler,
) (interface{}, error) {
start := time.Now()
resp, err := handler(ctx, req)
log.Printf("Method: %s, Duration: %s, Error: %v", info.FullMethod, time.Since(start), err)
return resp, err
}
Таким образом, интерсепторы помогают централизованно наблюдать и контролировать поведение системы без изменения бизнес-логики.