【问题标题】:microservices: async api feedback微服务:异步 api 反馈
【发布时间】:2022-06-18 15:00:58
【问题描述】:

我不太清楚如何从异步 api 获得反馈响应。

我的意思是,异步服务会响应任何类型的响应,例如:“好的,已收到。”

我知道有几种方法可以轮询任何操作状态(长轮询、服务器发送事件、websockets...)。

对我来说,这种获取反馈的方式同时也是一种超载服务的方式。

我的意思是,我正在构建一个异步服务以优化操作,但同时,我需要处理大量“检查状态”请求。

另一方面,当我的老板问我“异步操作失败怎么办”时,我可以对他说哪些话?那么客户反馈如何?

【问题讨论】:

  • 回叫、实时服务等。如果你只是做一些研究,有很多方法可以解决这个问题。

标签: microservices event-driven


【解决方案1】:

您可以使用回调机制(即发即弃)来处理这个问题。

Steps :
1-  req:Call async api  
     resp: ok received , callback url with unique request id .
2-  Processing started for request in async api and once it will finished it will send callback to requestor with status of req.
3- Parallel you can check the status of your request (you need to develop another api which will return status of your request by id) 

Total Api needed:
  1- Client.
  2- Asysnc processor api with callback functionality.
  3- Get request status  api which will return the status of request. 

【讨论】:

  • 但是 SPA 无法接收到任何回调,因为正在浏览器中运行...
  • 那么你应该在浏览器或任何屏幕的某处显示状态,请求者可以在其中检查请求的状态。
【解决方案2】:

这是一个非常普遍的问题,理论只是一个好的答案的基础!

Asynchronous 呼叫旨在用于mostly doesn't 需要实时反馈或关注的事件或呼叫。因此,它们的处理应该(或可以)在队列中按顺序或随时间进行。

Client feedback point

我们当然可以使用接受消息(with or without reponse body) 一旦请求被接收并发送以进行处理。在您的情况下,您肯定需要另一个端点/服务/等,具体取决于设计来检查状态,因为那是我们在 API 世界(REST 或 SOAP)中请求 resource 的唯一方法!

What if async operation fails

您肯定必须选择更好的异步支持者(例如,您可以选择更一致的和 fault taulerant Kafka (i'll prefer this), RabbitMQ ,其他一些 MQ 等)因为这些系统中的大多数都经过了很好的测试,具有更高的吞吐量和你可以阅读和比较他们的架构!

所以最终这取决于您如何设计和选择最适合您的系统的东西!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2019-02-08
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多