我有一项服务,我需要根据每个用户请求询问 40 个外部服务 (API) 以从它们那里获取信息。例如,一个用户正在搜索一些信息,而我的服务要求 40 个外部合作伙伴获取信息,将其聚合到一个数据库(mysql)中并将结果显示给用户。
目前我有一个 multicurl 解决方案,我一次有 10 个合作伙伴请求,如果有人完成了请求,那么软件将从剩余的 30 个合作伙伴添加到 multicurl 队列中,直到所有 40 个请求完成,结果在数据库中。
这个解决方案的问题是它不能在许多服务器上扩展,我想要一些解决方案,我可以一次触发 40 个请求,例如在 2-3 个服务器上划分,并且只等待很长时间,作为最慢的合作伙伴提供结果 ;-) 这意味着,如果最慢的合作伙伴需要 10 秒,我将在 10 秒内获得所有 40 个合作伙伴的结果。在 multicurl 上,当一次有超过 10-12 个请求时,我遇到了麻烦。
什么样的解决方案,你能给我提供什么,我得到尽可能少的资源,并且可以在一台服务器上运行许多进程并且是可扩展的。我的软件是用 PHP 编写的,这意味着我需要使用框架或 API 很好地连接到解决方案。
我希望你能理解我的问题和需要。请询问,如果有不清楚的地方。