如何调用多个服务?

How to call multiple service?

当我使用 Armeria 时,我有 3 项服务:

服务A调用服务B和服务C。

我应该在 A 的 blockingTaskExecutor 中调用 B 和 C 的阻塞存根还是其他更好的方法?

假设您询问的是 gRPC。在 Armeria 这样的异步框架中,建议使用 non-blocking 存根进行调用,这样就不会出现阻塞调用,因此对其他服务(您的情况下是服务 B 和 C)的调用都在事件循环线程。由于上下文切换次数较少,当其他服务响应不够快时,这会产生更高的性能。

您可以使用 gRPC-Java 生成的默认存根来执行此操作,但最终结果可能比必要的更复杂,因此我建议使用第三方存根生成器,例如 reactive-grpc, which provides the integration with RxJava and Project Reactor.

如果您使用的是 Kotlin,您可能想尝试 grpc-kotlin,但请记住它还处于早期阶段。