Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
群集web场中的Redis缓存?两个成员节点之间的同步?_Redis - Fatal编程技术网

群集web场中的Redis缓存?两个成员节点之间的同步?

群集web场中的Redis缓存?两个成员节点之间的同步?,redis,Redis,好的,我有两个web服务器在WindowsNLB集群环境中运行。服务器在各个方面都是相同的,正如您在NLB集群环境中所期望的那样,每个人都在点击集群名称,而不是单个成员。我们还关闭了群集中成员的关联性 但是,我想做的是为一些大文件(MP3)打开一些缓存。拨号一个特定成员上的Redis节点并点击它很容易,一切都像您所期望的那样工作。我可以从缓存中提取数据,并根据需要提供数据 现在,让我们添加NLB的开销。使用NLB时,您可能不会每次都访问同一个web服务器。您可能会第一次命中成员01,第二次命中成

好的,我有两个web服务器在WindowsNLB集群环境中运行。服务器在各个方面都是相同的,正如您在NLB集群环境中所期望的那样,每个人都在点击集群名称,而不是单个成员。我们还关闭了群集中成员的关联性

但是,我想做的是为一些大文件(MP3)打开一些缓存。拨号一个特定成员上的Redis节点并点击它很容易,一切都像您所期望的那样工作。我可以从缓存中提取数据,并根据需要提供数据

现在,让我们添加NLB的开销。使用NLB时,您可能不会每次都访问同一个web服务器。您可能会第一次命中成员01,第二次命中成员02。所以,我需要一种在两台服务器之间同步的方法。这样,无论你点击哪个集群成员,你都会得到相同的数据

我不需要担心一个缓存过时,我在其中存储的唯一内容是来自内部web服务的只读数据

我只有2台服务器,看起来redis集群需要3台。所以我想这是不可能的

这是最好的方法吗?或许还有更好的


redis的理由:我们只希望缓存只在内存中使用。没有写入数据库。我认为这很合适,但需要确保数据在两台服务器上都可用。

不可能使用redis multi-master(在两台服务器上都写入)。我可能会说它的复制速度非常快(请查看Redis的slaveof命令)

但是为什么您需要在同一台服务器中使用它呢?将其作为服务访问。因此,每个节点都将访问实际数据。如果主服务器宕机,从服务器将立即转变为主服务器


一个观察:您可能会注意到Redis以异步方式使用磁盘。一个仅附加的文件,它根据大小不时地进行检查点。因此,它通常是一个资源问题。我希望服务器冗余,但使用量非常小,所以为什么只为缓存提供整个服务器?当前web服务器集群的总体使用率非常低。如果它达到了这样的程度,我们有足够的容量,那么我们肯定会考虑将缓存部分剥离到它们自己的服务器上……Nick,因此您将在每台服务器上设置一个节点。一个是主人,另一个是奴隶。因此,您可以在没有额外成本的情况下实现冗余。那么,当我重新启动01(Master)时会发生什么情况?当02重新联机时,它将成为新的主设备,而02将成为从设备吗?我可以相信。既然如此,我会看看什么来找出如何使这成为一种镜像系统?我假设有某种东西可以将奴隶升级为主人,等等,但是当原始主人重新上线时会发生什么呢?等等。这取决于您的配置方式。如果您使用Redis sentinel(在本例中,您至少需要3个sentinel实例),则升级的从属服务器可以保持为主。否则主人,由于它的配置,将尝试承担并再次成为主人。Redis的占地面积很小。你应该试一试。