Использование перехватчиков сервера grpc для вложенных вызовов сервера

У меня есть клиент, который вызывает службу A grpc, которая вызывает другую службу B. Я хочу использовать ServerInterceptor, чтобы захватить всю трассировку вызовов в корневом диапазоне (уровень 1), начиная с клиента и службы A в качестве его дочернего диапазона (уровень 2 ) и сервис B как дочерний диапазон следующего уровня (на уровне 3) следующим образом:

Client Span
   |
   |__ Server A Span
              |
              |__ Server B Span

Я хотел бы использовать для этой цели клиентские и серверные перехватчики, поскольку я могу отслеживать все вызовы методов без явного инструментария всего кода продукта. Итак, мне нужно было бы внедрить контекст span с родительским диапазоном при выполнении каждого дочернего вызова, чтобы перехватчик на дочернем уровне мог извлекать и использовать его в качестве родительского диапазона при создании своего собственного диапазона.

Поскольку мне нужно объявить и передать все перехватчики при запуске сервера, как показано здесь, эти перехватчики не взаимодействуют друг с другом. В таком случае, как мне динамически вводить контекст диапазона на каждом уровне? Есть ли способ добавить ServerInterceptor в запущенную службу при перехвате другого вызова?

Другими словами, как мне распространить контексты промежутков между службами, которые отслеживаются с помощью отдельных перехватчиков трассировки сервера?

Вот как я добавляю перехватчики:

server = ServerBuilder.forPort(port)
.addService(ServerInterceptors.intercept(service, someInterceptor,
    someOtherInterceptor, serverTracingInterceptor))
.build()
.start();

Я пытаюсь создать перехватчики трассировки сервера и клиента, подобные этим: ServerTracingInterceptor.java, ClientTracingInterceptor.java.

Если это невозможно, не могли бы вы предложить альтернативные подходы?

Спасибо!


person prgrmmr    schedule 09.01.2019    source источник


Ответы (1)


Это определенно ошибка. Отправьте сообщение о проблеме с открытием java-grpc

person smalafeev    schedule 11.01.2019
comment
Спасибо! Отправлю вопрос. - person prgrmmr; 11.01.2019