Performance http响应的批处理生成
我试图为下面的场景找到一个体系结构。我正在构建一个REST服务,它执行一些可以快速批量计算的计算。假设计算一个“项目”需要50毫秒,计算100个“项目”需要60毫秒 但是,客户机的性质是一次只需要处理1个项目。因此,如果我同时有100个客户端,我编写典型的请求处理程序来发送一个项目并生成一个响应,我最终将使用5000ms,但我知道我可以在60ms内计算相同的时间 我试图找到一种在这种情况下运行良好的体系结构。也就是说,我希望有一些东西能够合并来自许多独立请求的数据,处理该批处理,并为每个客户机生成等效的响应Performance http响应的批处理生成,performance,rest,http,architecture,Performance,Rest,Http,Architecture,我试图为下面的场景找到一个体系结构。我正在构建一个REST服务,它执行一些可以快速批量计算的计算。假设计算一个“项目”需要50毫秒,计算100个“项目”需要60毫秒 但是,客户机的性质是一次只需要处理1个项目。因此,如果我同时有100个客户端,我编写典型的请求处理程序来发送一个项目并生成一个响应,我最终将使用5000ms,但我知道我可以在60ms内计算相同的时间 我试图找到一种在这种情况下运行良好的体系结构。也就是说,我希望有一些东西能够合并来自许多独立请求的数据,处理该批处理,并为每个客户机生
如果你好奇的话,所讨论的服务是基于python+django+DRF的,但是我很好奇这里应用了什么样的体系结构解决方案/模式,以及是否有任何解决方案可用。首先,你可以想到一个反向代理来检测所有特定于模式的查询,收集所有这些查询并以HTTP 1.1管道将其发送到应用程序(管道是一种一个接一个地发送大量查询并在最后以相同顺序接收所有HTTP响应的方法,而无需在每次查询后等待响应) 但是:
这里的关键是要有一个系统,在这个系统中,您在尝试共享请求时所花费的时间比在一起批处理多个查询时所节省的时间要少,并且在流量较低的情况下,这一次应该是合理的(因为在这里,您总是会浪费时间,无所事事地等待)当然,您也在系统上增加了一些复杂性,更难维护,等等。这不只是关于线程吗?如果计算速度不是那么快,我会建议使用缓存来实现这个想法……我一直在考虑使用消息队列而不是数据库或共享内存,这样请求处理程序就可以等待答复。