node.js - 在 Heroku 上使用 Laravel + Redis + Node.js for websocket app ...担心连接限制

标签 node.js laravel heroku websocket redis

这有点牵强,但我希望有人能提供帮助。

我是一名 PHP/iOS 开发人员,一直在开发一款具有消息传递组件的应用程序。前端是 Obj-C,后端目前是 PHP/MySQL。随着我深入开发,我感受到了轮询的缺点,我一直在寻找更实时的解决方案,果然,我在网络套接字中找到了答案。 PHP 在这个领域表现不佳,但我已经能够通过使用 Laravel + Redis + Node.js 让事情在本地工作。

接下来我需要为现实世界的应用程序部署找到一个合适的主机,这是我遇到的第一个主要障碍(或感知障碍?)

Heroku 似乎对允许的 Redis 连接数量有非常低的限制:

链接:https://elements.heroku.com/addons/heroku-redis 免费计划:20 个连接 120 美元/月:400 个连接 $1450/月:5000 个连接

问题是,如果这个应用程序表现良好并获得我想要的那种牵引力,那么全国各地都会有很多人同时使用它,这些限制让我很担心。这些价格似乎有点荒谬,或者我没有正确看待它。

所以我的问题是,维护一个开放的网络套接字(一个用户)是否意味着使用了其中一个 Redis 连接?还是我看这个完全错了?试图决定我是否需要坚持投票,或者是否有一个具有成本效益的解决方案。如果可能的话,我确实想坚持使用 Laravel/Redis,因为我对 JS 不太熟悉,而且我觉得如果我现在尝试沿着这条路线走下去,我的后端会更不安全。

最佳答案

正确的设计将在每个服务器(或每个 Heroku Dyno)上使用 2 个 Redis 连接:

一个连接将用于订阅(收听)应用程序的 channel 。此连接不能用于其他功能,所以...

第二个连接用于所有其他 Redis 功能,例如数据库使用和发布到应用程序的 channel 。

我不知道你是否喜欢 Ruby,但我是 Plezi Http(REST)/Websocket framework 的作者并且必须为 Plezi 在 Redis 上的扩展能力管理一个解决方案(这是一个自动化的功能,你只需告诉 Plezi Redis 服务器的地址就可以了)。

如果想看Plezi's Redis code ,您会注意到有两个连接,每个服务器注册到两个 channel - 一个全局 channel 和一个专用 channel :一个用于应用程序范围的事件,另一个允许消息根据它们所属的服务器路由到特定连接(避免不相关服务器上的工作负载)。

祝你好运!

关于node.js - 在 Heroku 上使用 Laravel + Redis + Node.js for websocket app ...担心连接限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33313768/

相关文章:

php - 关系中的 Laravel 侦察搜索

Javascript onclick 函数未定义

node.js - 如何正确使用Nest.js的@Headers?

javascript - NodeJS 中变量范围和 'require' 的奇怪行为

node.js - 从 Node 运行 Mocha 测试 - 'describe' 未定义

laravel - 如何在fluentd中解析laravel日志

ruby-on-rails - Heroku RoR 应用程序的持续集成服务器

java - Maven 构建失败

heroku - 打开 ~/.heroku/cacert.pem : no such file or directory - why am I getting this error?

javascript - Web3 错误 : Transaction has been reverted by the EVM: