我试图围绕消息队列模型和我想在PHP应用程序中实现的作业:
我的目标是卸载需要发送到多个第三方API的消息/数据,因此访问它们不会减慢客户端的速度.因此,将数据发送到消息队列是理想的选择.
我考虑使用Gearman来保存MQ/Jobs,但我想使用像SQS或Rackspace Cloud Queues这样的Cloud Queue服务,所以我不必管理这些消息.
这是我认为我应该做的图表:
问题:
我的工作人员,将用PHP编写,他们都必须轮询云队列服务?特别是当你有很多工人时,这可能会变得昂贵.
我想也许有一个工人只是为了轮询队列,如果有消息,通知其他工人他们有工作,我只需要让这个1工人在线使用supervisord?这种轮询方法比使用可以通知的MQ更好吗?我应该如何每秒轮询一次MQ,或者每秒轮询一次?如果看到它放慢速度,那么增加投票工作人员?
我还考虑为所有消息设置一个队列,然后是工作人员监视,根据需要处理的位置将消息分发到其他云MQ,因为1个消息可能需要由2个差异工作者处理.
我还需要gearman管理我的工人supervisord吗?还是我可以用来上下旋转工人?
每当发送消息与轮询MQ时,向主工作人员发送通知是否更有效和更快?我假设我需要用来gearman通知我的主要工作者MQ有一条消息,所以它可以开始检查它.或者,如果我每秒有300条消息,这将产生300个作业来检查MQ?
基本上我怎么能尽可能有效和有效地检查MQ?
对我的架构的建议或更正?