我有一个相当大的PHP网络应用程序,通过他们的API从许多其他供应商那里获得产品,通常用大量的XML来解析。目前有20家供应商,但这将进一步上升。
我们当前的设置使用多卷曲来发出请求,这需要大约30-40秒才能完成并且太长。该脚本在后台运行,而前端轮询数据库以查找结果,然后在它们进入时显示它们。
为了改进这个过程,我们考虑使用作业服务器在后台运行,每个供应商请求都是一个单独的工作。我们已经看到了beanstalkd和Gearman被提及。
那么,我们正在朝着正确的方向寻找正确的工作服务器吗?我们正在考虑尽快进行一些促销活动,以便我们可以让200多名用户同时搜索30家供应商,因此如果我们必须进行负载平衡,正确的选择需要适当扩展。
任何建议都很好。
答案 0 :(得分:0)
您可以使用Beanstalkd,因为您可以自定义作业的优先级和TTR的解析时间,默认为60秒,但对于您的方案,您必须增加它。 Beanstalkd有一个很好的admin console panel。
您还应该利用多个Curl调用,因此您应该使用并行请求。为了使用Keep-alive,您还需要维护一个CURL句柄池并保持温暖。见high performance curl tips。您还需要调整Linux network stack。
如果您在云中运行此功能,请确保使用多台微型计算机而不是一台重机,因为当您有多个可用资源时,吞吐量会更好。