这有点牵强,但我希望有人能帮忙。
我是一个PHP/iOS开发人员,一直在开发一个有消息传递组件的应用程序。前端是Obj-C,后端目前是PHP/MySQL。随着开发的深入,我感觉到了轮询的缺点,我一直在寻找一种更实时的解决方案,果然,我在web sockets中找到了答案。PHP在这个领域不太好,但我已经能够通过使用Laravel + Redis + Node.js在本地工作。
接下来,我需要为现实世界的应用程序部署找到一个合适的主机,这是我遇到的第一个主要障碍(或感知障碍?)
Heroku似乎对允许的Redis连接数量有很低的限制:
链接:https://elements.heroku.com/addons/heroku-redis免费套餐:20个连接每月120美元:400次连接$1450/月:5000个连接
问题是,如果这个应用程序做得很好,并获得了我想要的那种牵引力,那么全国各地的很多人都会同时使用它,这些限制让我担心。这些价格似乎有点荒谬,或者是我看得不对。
所以我的问题是,保持一个开放的web套接字(一个用户)意味着一个Redis连接被使用?还是我完全看错了?试图决定我是否需要坚持轮询,或者是否有一个具有成本效益的解决方案。如果可能的话,我确实想坚持使用Laravel/Redis,因为我对JS不太熟悉,而且我觉得如果我在这一点上尝试沿着这条路线走下去,我的后端将会不那么安全。
正确的设计将在每个服务器(或每个Heroku Dyno)上使用2个Redis连接:
一个连接将用于订阅(收听)应用程序的频道。此连接不能用于其他功能,所以…
第二个连接用于所有其他Redis功能,如数据库使用和发布到应用程序的通道。
我不知道你是否对Ruby感兴趣,但我是Plezi Http(REST)/Websocket框架的作者,必须管理Plezi在Redis上的扩展能力的解决方案(这是一个自动化的功能,你只需要告诉Plezi Redis服务器的地址,你就可以了)。
如果你想查看Plezi的Redis代码,你会注意到有两个连接,每个服务器注册两个通道-一个全局通道和一个私有通道:一个用于应用程序范围的事件,另一个允许消息路由到基于它们所属的服务器的特定连接(避免无关服务器的工作负载)。
祝你好运!