如何调用多个服务?
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,但请记住它还处于早期阶段。
当我使用 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,但请记住它还处于早期阶段。