将同步http请求/响应模型与基于异步队列的模型连接的好方法是什么?使用异步队列连接http请求/响应模型
当用户的HTTP请求到达时,它会生成一个进入队列的工作请求(在这种情况下为beanstalkd)。其中一名工作人员提出要求,完成工作并准备回应。
队列模型不是请求/响应 - 只有请求而不是响应。所以问题是,我们如何最好地将响应反馈回HTTP世界并回馈给用户?
思路:
Beanstalkd支持重量轻的主题或队列(它们调用它们管)。我们可以为每个请求创建一个管道,让工作人员在该管道上创建消息,并使http进程坐在管道上等待响应。不要特别喜欢这个,因为它具有围绕内存的apache进程。
让http客户端轮询响应。用户的初始HTTP请求会启动队列中的作业并立即返回。客户端(用户的浏览器)定期轮询响应。在后端,工作人员将其响应放入memcached,我们将nginx连接到memcached,因此轮询重量轻。使用Comet。与第二个选项类似,但用更加奇特的http通信来避免轮询。
我倾向于2,因为它很容易,很好知道(我还没有使用过彗星)。我猜这可能还有一个更好的明显的模型,我没有想到。你怎么看?
我有同样的问题,并在评估相同的选项的过程中。您能分享您选择的内容,执行方式以及实施解决方案的优缺点?谢谢 – tropikalista 2013-01-04 15:53:05