主服务器停机时redis群集恢复停机时间
当Redis集群中的主节点宕机时,Redis将等待节点超时以将从节点升级为主节点。从机升级到主机可能需要额外的时间。在master下降到slave升级到master期间,写入/读取,尤其是写入将失败。如何确保零停机时间?我认为这是大多数数据库的常见问题。假设您有一个mongo replicaset,主服务器关闭,从服务器升级需要一段时间,您会丢失写操作,mongo shard或mysql也是如此 即使redis可以提供即时故障切换(这是不可能的),也无法保证您的写操作,除非您在每次操作中都使用AOF和磁盘写操作,但这将非常缓慢,并破坏redis的整个用途 为了更好地保证写入,一个解决方案是将数据推送到队列中,如kafka,并异步写入redis或任何其他数据存储。但随后又引入了一个堆栈,我们还必须担心它的故障转移主服务器停机时redis群集恢复停机时间,redis,Redis,当Redis集群中的主节点宕机时,Redis将等待节点超时以将从节点升级为主节点。从机升级到主机可能需要额外的时间。在master下降到slave升级到master期间,写入/读取,尤其是写入将失败。如何确保零停机时间?我认为这是大多数数据库的常见问题。假设您有一个mongo replicaset,主服务器关闭,从服务器升级需要一段时间,您会丢失写操作,mongo shard或mysql也是如此 即使redis可以提供即时故障切换(这是不可能的),也无法保证您的写操作,除非您在每次操作中都使用A
因此,我认为我们应该尝试将redis视为缓存,而不是永久性的数据存储 谢谢你的洞察力。在我的例子中,我使用redis作为缓存,但长期存储的数据是通过redis转储持久化的。因此,如果用户数据(这是一个恒定流)没有到达redis,我们将永远丢失数据。你建议改变这个设计吗?我是否应该坚持在redis之外长期存储?