是否可以在Heroku上与Web和工作进程之间的http请求进行通信?

时间:2013-03-16 01:53:53

标签: heroku

我正在构建一个HTTP - > IRC代理,它通过HTTP请求接收消息,然后连接到IRC服务器并将它们发布到频道(聊天室)。

这一切都相当简单,我遇到的一个问题是与IRC服务器的连接是一个持久的套接字,理想情况下应该保持打开一段合理的时间 - 与打开和关闭套接字的HTTP请求不同每个请求(我知道并不总是如此)。这意味着必须始终通过相同的进程(与IRC服务器保持连接的进程)发送绑定到同一IRC服务器/房间的消息。

所以我基本上需要在我的Web进程上接收HTTP请求,然后让他们弄清楚哪个特定的工作进程与IRC服务器有一个开放的连接,并将消息路由到该进程。

我宁愿避免IRC代理应用程序中的消息队列的复杂性,因为我们已经有一个坐在它前面,首先向它发送HTTP请求。

考虑到这一点,我理想的解决方案是在Web和工作进程之间建立一个共享数据存储,并让工作进程维护一个他们所连接的所有IRC服务器的表。当Web进程收到HTTP请求时,它可以查找该表以确定是否已经有一个连接所需IRC服务器的工作者并将消息转发给该工作,或者如果没有现有连接,它可以有效地执行作为负载均衡器并选择适当的工作人员转发消息,以便建立并保持与IRC服务器的连接。

现在要做到这一点,它需要我的工作进程能够启动HTTP服务器并侦听来自Web进程的请求。在Heroku上我知道只有Web进程被添加到面向“路由网格”的公众,这很好,我想知道的是可以在Herokus网络内部(在“之外”在Web和工作进程之间发送HTTP请求路由网格“)。

如果我必须像我说的那样,我会使用一个消息队列。我希望避免它。

谢谢!

0 个答案:

没有答案