Как вызвать многократную услугу?

Когда я использую Армерию, у меня есть 3 сервиса:

Служба A вызывает службу B и службу C.

Должен ли я вызвать блокирующую заглушку B и C в blockingTaskExecutor A или каким-либо другим способом?

1 ответ

Решение

Допустим, вы спрашиваете о gRPC. В асинхронных фреймворках, таких как Armeria, рекомендуется использовать неблокирующую заглушку для выполнения вызова, чтобы не было блокирующих вызовов и, следовательно, все вызовы других служб (службы B и C в вашем случае) выполнялись в случае события. петля ниткой. Это дает потенциально более высокую производительность благодаря меньшему количеству переключений контекста и большей надежности, когда другие службы недостаточно отзывчивы.

Для этого можно использовать заглушку по умолчанию, сгенерированную gRPC-Java, но конечный результат может быть более сложным, чем необходимо, поэтому я бы рекомендовал использовать сторонние генераторы заглушек, такие как reactive-grpc, который обеспечивает интеграцию с RxJava и Проект Реактор.

Если вы используете Kotlin, вы можете попробовать grpc-kotlin, но имейте в виду, что он находится на ранней стадии.

Другие вопросы по тегам