Node.js和Redis在同一台服务器上?

我们使用云托pipe(Linode)来托pipe基于node.js的(和socket.io)聊天应用程序,并以redis作为主要数据库。 我们还没有启动,但是我们正在考虑在同一台机器上托piperedis和node.js(8 GB实例,redis限制为5 GB)。 所有的通信都将在redis中进行(即直接从客户端到redis,node.js中没有对话框的variables)。 为了避免其他瓶颈的networking旅行时间,我们正在考虑在同一台服务器上托piperedis和node.js。 我不能在文档中find任何certificate这个主意不好的东西,但是我们的系统pipe理员不相信。 沿着这条路线有没有什么缺点?

请参阅我在SO上发布的一个类似的问题: Redis部署configuration – 主从复制 ,其中OP有类似的问题,但他的担心更多地与性能有关。

我的解决scheme的主要问题(一个简单的方面注意到另一个答案)是一个简单的事实,你的node.js应用程序devise必须面向云,例如,互联网,而你的Redis或其他数据库不应该。

这并不意味着你一定会遇到安全问题,但是在我看来,最好的做法是只将你真正需要的主机公开,比如通常直接向用户提供内容的主机。

通过不将Redis部署到面向主机的互联网,只需通过networking的拓扑devise即可实施许多安全限制。

将这些服务放在同一个盒子里可以吗?

是的,请不时地运行基准testing,以检查是否需要水平扩展或者只是碰撞被淹没的主机。

检查: Redis部署configuration – 主从复制

让Redis或其他服务面向互联网,会有安全问题吗?

如果你知道你在做什么 – 不,你将不会有安全问题。 我仍然不会这样做。

我不能评论,因为我还没有足够高的代表,但是切断“networking瓶颈”redis速度非常快,延迟是微不足道的。 这种方法的问题是,如果你的盒子崩溃了,那么在redis中保存的所有数据都将被删除,除非你正在复制到一个slave。 如果发生故障,其他任何不在该机器上的进程将不能访问,直到重新启动。 这可能是一个阶段env罚款,但我会防止它在生产。