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

标签 node.js redis socket.io

我们正在使用云托管 (Linode) 托管基于 node.js(和 socket.io)的聊天应用程序,以 redis 作为主要数据库。我们还没有推出,但我们正在考虑在同一台机器上托管 redis 和 node.js(8 GB 实例,例如,redis 限制为 5 GB)。所有通信都将在 redis 中进行(即直接从客户端到 redis,node.js 中没有用于对话的变量)。为了避免网络传输时间成为其他瓶颈,我们正在考虑在同一台服务器上托管 redis 和 node.js。我在文档中找不到任何说明这是个坏主意的内容,但我们的系统运算符(operator)不相信。沿着这条路走有什么缺点吗?

最佳答案

请引用我在 SO 上针对类似问题发布的非常相似的答案:Redis deployment configuration - master slave replication OP 遇到了类似的问题,但他的担忧更多地与性能有关。

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

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

通过不将 Redis 部署到面向 Internet 的主机,您只需通过网络的拓扑设计就可以实现大量安全限制。

是否可以在同一个盒子中托管这些服务:

是的,一定要时不时地运行基准测试来检查你是否需要水平扩展或者只是增加被淹没的主机。

检查:Redis deployment configuration - master slave replication

如果让 Redis 或其他服务面向互联网,我会遇到安全问题吗?

如果您知道自己在做什么 - 不,您不会遇到安全问题。尽管如此,我还是不会这样做。

关于同一台服务器上的 Node.js 和 Redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29233124/

相关文章:

Redis - 如何区分两个列表

javascript - ES6 类扩展了 Socket IO

file-upload - 我可以通过 node.js 中的 socket.io 将文件上传到服务器吗?

node.js - Docker 在生产中组合

node.js - native 无服务器与无服务器 Express

javascript - Node.JS + Express + Socket.IO - websocket 连接无效信息

node.js - 设置 "firebase javascript"与 "ionic serve"一起使用

ruby - 创建Redis集群时出现Err : Node 127. 0.0.1:6379未配置为集群节点

redis - 连接到 redis-cli 时连接被拒绝

java - 我可以将 Socket.io 与 Spring-boot 一起使用吗?