首页 > 解决方案 > 由于文件系统,如何正确构建微服务

问题描述

我有一个 API1 调用 API 2 来执行任务,例如:

1)裁剪图像,保存图像

这个过程需要很长时间,当然呼叫超时。

这两个 API 都内置在 Nodejs Rest API 中。

如何正确构建此过程以使我没有超时?

我是否调用端点,而不是稍后以某种方式调用端点再次检查?

标签: node.jsrestapimicroservices

解决方案


那种由于长时间操作而可能会超时的系统,您可以使用 aysnc 操作 AMQP(高级消息队列协议)。这两个服务/应用程序都应该完全独立地工作。您的服务 1 将消息放入队列中,服务 2 拾取要处理的消息。完成后,它会通知服务 1。

您必须注意 REST/HTTP 本质上是同步的,您需要了解其含义。这意味着当您的服务 1 通过 HTTP 请求其他服务做某事并等待它完成时,您实际上是在阻塞线程。尽管您的客户端可能正在实现异步 http 调用,但在后台您仍在等待请求以同步方式完成,并且这种系统很难扩展。

另一个建议是尽可能使用无服务器。例如 AWS lambda/Azure 函数通常非常擅长它。基本上你通知无服务器函数做一些操作,当它们完成时你可以连接通知。但是它们有只能运行几分钟的限制。真的取决于你是否有适合无服务器的操作。


推荐阅读