我编写了一个实时 Web 应用程序,其中包含以下内容:
Rails 为网页提供服务(监听端口 80) Nodejs 处理实时逻辑(监听端口 8888) 所以在我的 rails 应用程序服务的特定页面上,JS 将使用 socket.io 建立与我的 nodejs 的连接实例以允许实时 http 推送。
我将不得不为不同的服务器(Rails 和 Node js)部署单独的应用程序。这是一个好的解决方案(在 Heroku 上有多个应用程序)吗?这会影响性能吗?是否会产生任何额外费用?
我编写了一个实时 Web 应用程序,其中包含以下内容:
Rails 为网页提供服务(监听端口 80) Nodejs 处理实时逻辑(监听端口 8888) 所以在我的 rails 应用程序服务的特定页面上,JS 将使用 socket.io 建立与我的 nodejs 的连接实例以允许实时 http 推送。
我将不得不为不同的服务器(Rails 和 Node js)部署单独的应用程序。这是一个好的解决方案(在 Heroku 上有多个应用程序)吗?这会影响性能吗?是否会产生任何额外费用?
我对 Python 和节点应用程序也是如此。我能看到的两个缺点是:
如果你想防止测功机空转,每个应用程序必须至少有 2 个测功机,这意味着更多的成本。您可以通过至少每小时一次“ping”(在 http 级别)每个应用程序来规避这种情况。从 pingdom 或任何其他免费提供的服务中说。一个应用程序甚至可以 ping 另一个。
您的应用程序之间的通信并不像您希望的那样“直接”。也就是说:它不是通过本地接口。我不在我的应用程序之间共享状态(没有 Redis、没有 DB、没有 amq),它们之间的通信是 RESTful 的。所以我的 Python 应用程序必须通过 Heroku http 路由器才能访问我的节点应用程序(即:它必须访问my-node-app.herokuapp.com
)。这只会增加一点延迟(我并不真正关心),并且只会给我的代码增加一点复杂性:我的 Python 和节点应用程序现在有一个共享密钥,以便将我的 Python 应用程序验证到我的节点应用程序。这是为了防止“公众”联系我的节点应用程序。
总的来说,正如我所说,我认为这是一个相当不错的解决方案。