redis高可用1

83 阅读2分钟

「这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战」。

一、前置知识

  1. 分布式系统理论基石CAP:consistent-一致性,availability-可用性,partition tolerance-分区容忍性。
  2. 网络分区:网络断开也叫网络分区,当网络分区发生时,一致性会被破坏,除非牺牲可用性,等数据变一致之后再提供服务。所以一致性和可用性只能二选一
  3. 高可用需要满足的三个条件:1)数据备份在不同节点上,防止数据丢失 2)故障自动转移,正在服务的节点发生故障时,可以自动切换到备用节点 3)在线扩容(缩容),可以根据需要动态增加或者减少服务实例

二、什么是高可用?

高可用需要满足以下两个条件: 1、数据尽量不丢失。2、服务尽可能提供。 数据不丢失,有AOF和RDB帮助持久化数据,保证数据尽量不丢失;主从复制就是增加数据副本,即使一个实例宕机,其他实例也能提供服务。AOF和RDB的介绍见数据持久化之AOF和RDB(后续补充完善),本文主要谈谈什么是主从复制。

三、主从复制

1、概念

主从复制简单来说就是将主节点的数据复制到其他所有从节点上的过程。redis的主从复制是单向的,只能从主节点复制到从节点,一个主节点可以有多个从节点,一个从节点只能有一个主节点,因此只有主节点能够提供写服务,其他节点都是提供读服务的。

2、如何保证数据的一致性?

主从节点之间的读写操作是分离的,主节点可以提供读写服务,而从节点只提供读服务,这样可以保证所有副本数据是一致的,但是redis只保证最终一致性。redis的数据复制是异步的,主从节点之间异步确认需要处理的数据量,所以无法保证实时的一致性,这样做的好处是时延低、性能高、保证redis的可用性。 redis读写分离.png