设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > MySql教程 > 正文

一文带你揭开Redis复制原理的神秘面纱

发布时间:2019-09-17 08:52 所属栏目:115 来源:陈龙
导读:Redis作为一个非结构化的内存数据库,在某些应用场景具备相应优势,在实际的场景设计中也得到广泛的关注和使用。但是,大部分企业的Redis数据库架构为单机运行,没有设计容灾复制,这样对于Redis的容错特性没有发挥出来,而且无持久化情况下,数据存在丢失

Redis作为一个非结构化的内存数据库,在某些应用场景具备相应优势,在实际的场景设计中也得到广泛的关注和使用。但是,大部分企业的Redis数据库架构为单机运行,没有设计容灾复制,这样对于Redis的容错特性没有发挥出来,而且无持久化情况下,数据存在丢失风险。

特别是以一些微服务企业,Redis作为热点数据层,面对传统数据库的请求较少。因此对于缓存依赖性就很高,一旦出现缓存崩掉,所有的数据就会流入到传统数据库,对于高并发情况下,这样的性能反应就会很差。

因此,本文在依托Redis主从环境下,针对访问的数据一致性进行分析,解开Redis复制原理的神秘面纱。

一.Redis架构

开篇以Redis的架构出发,这也是分析Redis数据一致性的基础前提,对Redis的架构进而了解后,分析数据一致性的实现原理。本文着重与Redis集群与主从复制进行对比分析。

Redis的常规架构方式有以下几种:

  • 单机单实例运行
  • 系统HA主从复制
  • Redis 集群
  • 系统HA Redis 集群

1.png

图1,Redis架构类型

二、Redis 集群

在很多企业中没有Redis集群,但是至少做了主从复制。有了主从复制,当主节点挂掉的时候,可以让从节点过来进行接管,这样服务可以继续运行。如果没有此操作,那么要恢复业务,就需要等主节点进行数据恢复和重启,不仅耗时较长,同时影响业务的连续性。

Redis 集群提供了以下两个好处:

  • 将数据自动切分(split)到多个节点的能力。
  • 当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力。

Codis 是redis的集群方案之一,欣慰的是它是国内自己的工程师开发的。

一文带你揭开Redis复制原理的神秘面纱

图2,国产codis集群架构

三、Redis 主从复制

主从复制的诞生,就是为了存在单节点故障情况下,可以进行快速转移,使得业务可以正常运作。 Redis 集群对节点使用了主从复制功能: 集群中的每个节点都有 1 个至 N 个复制节点(replica), 其中一个复制节点为主节点(master), 而其余的 N-1 个复制节点为从节点(slave)。

复制虽然解决了数据多副本的问题,但是同时也存在多副本一致性的难题。在此之前,构建一套主从复制模型,针对其运行进行剖析。

对于主从复制的搭建也是非常简单的,为了方便演示下面简述一下其搭建过程。

  • 主服务器IP:127.0.0.1
  • 主服务器端口:6379
  • 从服务器IP:127.0.0.1
  • 主服务器端口:6380

(1) 整理conf配置文件

复制一份conf配置文件给从库使用,方便后期从库的配置管理

  1. [redis@albert redis-5.0.4]$ cp redis.conf redis.conf6380 

(2) 同步复制配置

备注:仅在从库上进行设置

  1. ################################# REPLICATION ################################# 
  2.   
  3. # Master-Replica replication. Use replicaof to make a Redis instance a copy of 
  4. # another Redis server. A few things to understand ASAP about Redis replication. 
  5. #   +------------------+      +---------------+ 
  6. #   |      Master      | ---> |    Replica    | 
  7. #   | (receive writes) |      |  (exact copy) | 
  8. #   +------------------+      +---------------+ 
  9. # 1) Redis replication is asynchronous, but you can configure a master to 
  10. #    stop accepting writes if it appears to be not connected with at least 
  11. #    a given number of replicas. 
  12. # 2) Redis replicas are able to perform a partial resynchronization with the 
  13. #    master if the replication link is lost for a relatively small amount of 
  14. #    time. You may want to configure the replication backlog size (see the next 
  15. #    sections of this file) with a sensible value depending on your needs. 
  16. # 3) Replication is automatic and does not need user intervention. After a 
  17. #    network partition replicas automatically try to reconnect to masters 
  18. #    and resynchronize with them. 
  19. # replicaof <masterip> <masterport> 
  20. # slaveof <masterip> <masterport> 
  21.   slaveof 127.0.0.1 6379 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读