Sobes.tech
Senior
25

Как интерсепторы помогали наблюдать за системой? Что конкретно они делали?

Companies where asked
Финтехробот

Answer from AI

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
}

Таким образом, интерсепторы помогают централизованно наблюдать и контролировать поведение системы без изменения бизнес-логики.