【问题标题】:Asynchronous GRPC?异步 GRPC?
【发布时间】:2023-03-07 14:21:01
【问题描述】:

我正在设计一个新系统,该系统将获取一组汽车数据的哈希值,然后使用该数据调用一个单独的 API,该 API 返回一个布尔值,之后我将返回给原始调用者的汽车模型和真假。

系统需要可以从其他应用程序调用,所以我正在研究 GRPC 来解决这个问题。我的问题围绕着如何在 GRPC 中实现这个解决方案,以及像 RabbitMQ 这样的东西是否会更好?

创建一个双向流式 GRPC 解决方案是否有意义,其中客户端在汽车列表中流式传输,然后在服务器端我生成说服务器上每个请求的延迟作业?然后当每个延迟的作业完成处理时,我将该值返回给流中的原始调用者?

这是一个优雅的解决方案还是有更好的方法来实现我的目标?谢谢。

【问题讨论】:

    标签: asynchronous rabbitmq grpc synchronous


    【解决方案1】:

    gRPC 的流系统通常是为异步通信而设计的,因此它应该很适合您的用例。

    在这种情况下,一般设计理念是将流中发送的每个单独消息视为独立的。基本上,请确保您的 proto 消息包含应用程序需要对其进行解析和处理的所有信息,而不需要之前调用的任何上下文。

    【讨论】:

    • 即使在流中,调用是否仍然是“同步的”,因为每个原始消息都被一一发送,并且客户端正在等待完整的响应结束?
    • 双向流媒体不是这样工作的,不。当数据到达时,您会获得数据,而没有像您描述的那样的双稳态系统。事实上,整个 grpc 都是围绕异步设计的。各种同步功能实际上只是搭载在异步版本上,然后等待。
    • 同样在我的服务器文件中,除非对活动记录表进行查询,否则我可以让事情正常工作,如何从 grpc 服务器调用我的 ruby​​ 后端文件中的方法来更新表我的后端通过活动记录?该文件还执行 http 请求。
    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2018-08-25
    • 2020-11-12
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多