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

问题描述 投票:5回答:2

我们正在使用云托管(Linode)托管一个基于node.js(和socket.io)的聊天应用程序,其中redis作为主要数据库。我们尚未启动,但我们正在考虑在同一台计算机上托管redis和node.js(8 GB实例,例如Redis限制为5 GB)。所有通信都将以redis进行(即,从客户端到redis,在node.js中没有用于对话的变量)。为了避免网络传输时间困扰其他瓶颈,我们正在考虑在同一服务器上托管redis和node.js。我在文档中找不到任何说明这是个坏主意的东西,但是我们的sysops家伙并不确信。走这条路线有什么弊端吗?

node.js redis socket.io
2个回答
0
投票

[我在SO的类似问题上引用了一个非常相似的答案:Redis deployment configuration - master slave replication,OP遇到了类似的问题,但他的担忧与性能更相关。

我解决方案的主要问题(另一个答案的一个简单说明)是一个简单的事实,即您的node.js应用程序在设计上必须面向云,例如,互联网,而您的Redis或其他数据库则不应该。

这并不意味着您一定会遇到安全问题,但我认为,最佳做法是仅公开您真正需要的主机,例如通常直接向用户提供内容的主机。

通过不将Redis部署到面向Internet的主机,您仅通过网络的拓扑设计就可以实施很多安全约束。

是否可以在同一框中托管这些服务:

是,请不时运行基准以检查是否需要水平扩展或仅增加被淹没的主机。

检查:Redis deployment configuration - master slave replication

通过让Redis或其他服务面向互联网,我是否会遇到安全问题?

[如果您知道自己在做什么-不,您将不会遇到安全问题。我仍然不会这样做。


0
投票

消除“网络瓶颈”的速度几乎没有增加; Redis是如此之快以至于延迟可以忽略不计。这种方法的问题在于,如果您的机器崩溃了,那么保存在redis中的所有数据都将丢失,除非您要复制到从属服务器上。如果它出现故障,则除非重新启动,否则无法访问该设备上的任何其他进程。这对于分阶段的环境可能很好,但是我会在生产中对此加以防范。

© www.soinside.com 2019 - 2024. All rights reserved.