【问题标题】:How to call multiple service?如何调用多个服务?
【发布时间】:2020-12-14 00:57:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: armeria


    【解决方案1】:

    假设您询问的是 gRPC。在像 Armeria 这样的异步框架中,建议使用非阻塞存根进行调用,这样就没有阻塞调用,因此对其他服务(在您的情况下为服务 B 和 C)的调用都在一个事件中完成循环线程。由于在其他服务响应不足时,上下文切换量更少且鲁棒性更高,这可能会产生更高的性能。

    您可以使用 gRPC-Java 生成的默认存根来执行此操作,但最终结果可能比必要的更复杂,因此我建议使用第三方存根生成器,例如 reactive-grpc,它提供了集成RxJavaProject Reactor

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

    【讨论】:

    • 非常感谢!我会尝试反应式。
    • 太棒了。一旦你成功了,请考虑用一些可行的例子来更新你的问题。
    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多