设为首页 - 加入收藏 汉中大乐透机选倍投一注 (http://www.0916zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 通讯 为什么 系统 知识
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2019-09-20 11:39 所属栏目:[MySql教程] 来源:陈龙
导读: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. #???+------------------+??????+---------------+?
  7. #???|??????Master??????|?--->?|????Replica????|?
  8. #???|?(receive?writes)?|??????|??(exact?copy)?|?
  9. #???+------------------+??????+---------------+?
  10. #?
  11. #?1)?Redis?replication?is?asynchronous,?but?you?can?configure?a?master?to?
  12. #????stop?accepting?writes?if?it?appears?to?be?not?connected?with?at?least?
  13. #????a?given?number?of?replicas.?
  14. #?2)?Redis?replicas?are?able?to?perform?a?partial?resynchronization?with?the?
  15. #????master?if?the?replication?link?is?lost?for?a?relatively?small?amount?of?
  16. #????time.?You?may?want?to?configure?the?replication?backlog?size?(see?the?next?
  17. #????sections?of?this?file)?with?a?sensible?value?depending?on?your?needs.?
  18. #?3)?Replication?is?automatic?and?does?not?need?user?intervention.?After?a?
  19. #????network?partition?replicas?automatically?try?to?reconnect?to?masters?
  20. #????and?resynchronize?with?them.?
  21. #?
  22. #?replicaof???
  23. #?slaveof???
  24. ??slaveof?127.0.0.1?6379?

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章