首页 > 解决方案 > 使用数据库在 Web 服务的后端和前端之间存储临时结果

问题描述

我有一个多线程后端应用程序。输入 x 并输出 y,这构成了一个“工作”。一项作业最多可能需要几秒钟才能完成。应用程序通过 HTTP 请求获得输入,一旦作业完成,它将返回对 HTTP 的响应(因此响应时间可能是几秒钟)。响应数据的大小可以从几个字节到大约半 MB 不等。

问题是,当向应用程序发送大量请求时,所有线程都在等待作业完成,导致进一步请求的响应时间很长 - 而我希望应用程序专注于完成作业.

我在想也许更好的方法是:根据请求将作业添加到队列中,并在请求 HTTP 消息中返回作业已收到的消息。应用程序将处理结果,然后将它们上传到数据库。然后可以通过网络服务器从数据库下载结果并发送到客户端。但是,我对这种方法有一些疑问。

  1. 响应数据库将经常被写入和读取。是否有一类数据库是为以这种方式频繁访问而设计的——主要与性能有关?此外,这些结果将是临时的,一旦被读取就需要从数据库中删除。(我经常想到来自更传统的 MySQL 的数据库,这些数据库需要频繁查询才能实现我所描述的内容)。

  2. 远离 HTTP 响应意味着需要以某种方式通知客户端结果已经到达。从 Web 开发人员的角度来看,向客户端的网页发送响应的好方法是什么?

  3. 这个数据库管道/架构是否有一个名称,以便我可以对其进行更多研究?我知道这个过程可能被粗略地描述为一个微服务架构,其中 API 用于在后端应用程序之间进行通信。

对于前端和后端之间的此数据库通信的任何其他信息/见解将不胜感激。

标签: databaserestweb-servicesbackendcommunication

解决方案


推荐阅读