Redis在这种情况下是单点故障吗(Redis,Node.JS,Socket.IO)?

Is Redis a single point of failure in this scenario (Redis, Node.JS, Socket.IO) ?

我使用 Redis 是因为它允许我水平扩展我的应用程序(多个服务器)。通过使用它的 pub sub 功能,我的所有服务器都可以相互通信而无需共享内存。

到目前为止,太棒了!我们可以添加更多的 nodejs 服务器,但是所有这些服务器都订阅了一个单独的 Redis 服务器。所以我们有很多 NodeJs 服务器只与一个 Redis 服务器通信的情况,我们可以服务更多的客户端,但我们仍然只有一个 Redis。

根据我的测试,Redis 服务器使用的资源较少,因此可以处理更多资源,但我认为在这种设计中仍然是 SPF。你怎么看?

设计可扩展系统的最佳方法是什么?我知道 master/slave Redis,但我仍然不确定它是否是最佳解决方案。

是的,Redis 是您所描述的单点故障。不仅从某种意义上说,当它关闭时,您的应用程序也关闭了,而且从某种意义上说,如果您的某个进程删除或损坏了数据,那么它就会永远丢失。

能做的就是使用多台Redis服务器,做好备份策略。

请参阅此聚类教程:

查看这些备份教程: