一、分布式系统基础理论

  分布式系统的两个基础理论:

1.CAP理论

如图:

Consistency(强一致性):数据一致更新,所有数据变动都是同步的。
Availability(可用性):好的响应性能。
Partition tolerance(分区容忍性):可靠性。

  在CAP理论中,任何分布式系统都只能满足以上三个条件中的两个。

2.BASE理论

BA:基本可用。基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

S:软状态。软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。如主从复制的状态。

E:最终一致性。最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

二、Redis运行和维护时常用的配置

1.Redis的配置介绍

配置段:

INCLUDES:配置文件模块化
NETWORK:网络相关配置
GENERAL:通用配制
SNAPSHOTTING:快照持久功能配置
REPLICATION:主从同步复制配置
SECURITY:安全相关配置
LIMITS:资源相关配置
APPEND ONLY MODE:
LUA SCRIPTING:
REDIS CLUSTER:Redis集群相关配置
SLOW LOG:慢查询日志配置
LATENCY MONITOR:延迟监控
EVENT NOTIFICATION:事件配置
ADVANCED CONFIG:

2.GENERAL配置段中常用的配置阐述

1. supervised :如果用upstart或systemd运行Redis时可以配置此项,一般设置为 no

3.NETWORK配置段中常用的配置阐述

1. bind :配置监听地址,建议在iptables中就设置访问策略,且在Redis中配置认证。

2. protected-mode :避免Redis完全暴露在互联网上。当没有设置监听地址且没有配置密码时此项开启才会生效。

3. port :监听端口。

4. tcp-bocklog :

5. unixsocket /tmp/redis.sock :若本地连接可使用socket。

6. timeout :客户端连接空闲超时连接。

7. tcp-keepalive :tcp保持连接

4.SECURITY配置段常用配置

1. requirepass :添加验证密码

2. rename-command :修改CONFIG名,在AOF、Replication环境中不建议使用。

5.LIMITS配置段相关配置

1. maxclients :最大并发连接数,默认为10000.

2. maxmemory :最大使用内存。

3. maxmemory-policy :当内存使用达到最大值后做出如何的处理。默认为noeviction。

6.SLOW LOG配置段相关配置

1. slowlog-log-slow-than :查询市场高于此值时启动慢查询。

2. slowlog-max-len :慢查询最大长度

7.ADVANCED CONFIG配置段相关配置

1. hash-max-ziplist-entries :hash数组最多允许成员数。

2. hash-max-ziplist-value :每一成员最大值不得超过的字节数。

3. list-max-ziplist-size :限制list类型最大长度。

4. client-output-buffer-limit normal :常规客户端一侧输出缓冲区的大小。

5. client-output-buffer-limit slave :从服务器客户端一侧输出缓冲区的大小。

6. client-output-buffer-limit pubsub :订阅服务器客户端一侧输出缓冲区的大小。

  例: client-output-buffer-limit normal 256mb 64mb

8.CONFIG命令介绍

  CONFIG命令可在Redis运行时修改配置,不用重启服务便能生效。

CONFIG GET :获取

CONFIG SET :设置

CONFIG REWRITE :将内存中的配置重写至(覆盖)配置。

CONFIG RESETSTAT :重置计数器。

三、Redis持久化

  为了避免像Memcached那样一旦服务器重启数据便会丢失的情况,Redis会对内存中的数据做持久化,将内存中的数据同步至磁盘。Redis持久化机制的目的仅仅是为了将内存的数据存储至磁盘,而不是基于磁盘的数据进行服务,Redis所提供的数据服务只能是基于内存的。

1.RDB

  RDB是基于快照进行的持久化,按事先定制的策略,周期性地将数据从内存同步至磁盘。也可以用命令 SAVE 和 BGSAVE 手动启动快照功能,SAVE会在主线程中保存快照,此时会阻塞所有客户端请求,是同步的;而BGSAVE则是在后台完成快照,不会影响主线程,是异步的。Redis默认的持久化机制是RDB。

  RDB相关的配置示:

save :配置触发快照条件

 save   #在过去的900秒钟有1个键发生变化就会触发快照功能。
save #在过去的300秒钟有10个键发生变化就会触发快照功能。
save #在过去的60秒钟有10000个键发生变化就会触发快照功能。

stop-writes-on-bgsave-error :dump操作出现错误时,是否禁止新的写入操作请求。

rdbcompression :对快照是否进行压缩。

rdbchecksum :是否对快照文件进行校验。

dbfilename :配置备份的快照文件名。

dir :快照文件的路径。

2.AOF

  AOF(Append Only File),类似于MySQL中的二进制日志进行的持久化,记录每次写操作至指定的文件尾部实现的持久化。当redis重启时,可通过重新执行文件中的命令在内存中重建出数据库。效率会低于RDB。

  AOF相关的配置:

appendonly :是否启用AOF功能。

appendfsync :配置同步规则,可以按每秒,或者按每语句。

no-appendfsync-on-rewrite :是否在后台执行aof重写期间不调用fsync,默认为no,表示调用。

auto-aof-rewrite-percentage 100 & auto-aof-rewrite-min-size 64mb :这两个两个条件同时满足时,方会触发重写AOF;与上次aof文件大小相比,其增长量超过100%,且大小不少于64MB。

  注:持久机制本身不能取代备份;应该制订备份策略,对redis库定期备份。

四、Redis主从复制

  Redis 的复制 (replication) 是一种使用和配置起来非常简单的主从(master-slave)复制,允许 Redis 从服务器成为主服务器的精确副本。一个Master可以有多个slave主机,支持链式复制;Master以非阻塞方式同步数据至slave主机。快照同步方式:

  

  配置slave节点:

 redis-cli> SLAVEOF <MASTER_IP> <MASTER_PORT> #在从节点配置主节点的地址和端口
redis-cli> CONFIG SET masterauth <PASSWORD> #若主节点开启器了认证功能,则在从节点配置认证密码。

  也可在配置文件中的REPLICATION配置段进行配置:

slaveof :在从节点配置主节点地址和端口。

masterauth :认证

epl-diskless-sync :Diskless,主节点直接通过快照进行复制至从节点;Disk-backend,主节点新创建快照文件于磁盘中,而后将其发送给从节点,默认为no。

repl-timeout :复制超时时间。

slave-priority :从节点优先级。

五、Sentinel

  Sentinel是一个"监视器",根据被监视实例的身份和状态来判断该执行何种操作。通过给定的配置文件来发现主服务器的,再通过向主服务器发送的info信息来发现该主服务器的从服务器。Sentinel 实际上就是一个运行在 Sentienl 模式下的 Redis 服务器。根据投票机制来实现当主节点故障时由谁来担当主节点。

  Sentinel是Redis自带的服务,可以直接用 redis-sentinel 来进行启动管理,Redis中有专门配置redis-sentinel的配置文件 /etc/redis-sentinel.conf 。

  Sentinel相关配置(注:所有节点的认证要相同):

 port
sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel auth-pass <master-name> <password>
<master-name> :配置要监控的主节点的标识符,可自己定义。
<quorum> :票数
<ip>:主节点IP
<redis-port>:主节点端口

sentinel down-after-milliseconds <master-name> <milliseconds> :监控到指定的集群的主节点异常状态持续多久方才将标记为“故障”。

sentinel parallel-syncs <master-name> <numslaves> :指在failover过程中,能够被sentinel并行配置的从节点的数量。

sentinel failover-timeout <master-name> <milliseconds> :sentinel必须在此指定的时长内完成故障转移操作,否则,将视为故障转移操作失败。

sentinel notification-script <master-name> <script-path> :通知脚本,此脚本被自动传递多个参数。

Quorum机制:

  集群中有5个sentinel,票数被设置为2,当2个sentinel认为一个master已经不可用了以后,将会触发failover,但是,进行failover的那个sentinel必须先获得至少3个sentinel的授权才可以实行failover。

Redis持久化存储与复制功能简述的更多相关文章

  1. Part_three:Redis持久化存储

    redis持久化存储 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1.RD ...

  2. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  3. Redis持久化存储(AOF与RDB两种模式)

    Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一 ...

  4. Redis持久化存储详解(一)

    > 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存.我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的 ...

  5. Redis持久化存储与主从复制

    4. redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 4.1 ...

  6. Redis持久化存储(三)

    redis高级特性-发布订阅消息服务功能 Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消 ...

  7. Redis持久化存储——>RDB & AOF

    Redis中两种持久化存储机制RDB和AOF redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB ...

  8. Redis持久化存储(RDB和AOF)

    参考了: https://blog.csdn.net/canot/article/details/52886923  和 https://www.cnblogs.com/zhangchao-letv/ ...

  9. Redis持久化存储(一)

    Redis介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...

随机推荐

  1. 使用注解配置Spring

    使用注解配置Spring 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 将对象注册到容器 修改对象的作用范围 值类型注入 引用类型注入 注意: 初 ...

  2. 走进JDK(十)------HashMap

    有人说HashMap是jdk中最难的类,重要性不用多说了,敲过代码的应该都懂,那么一起啃下这个硬骨头吧!一.哈希表在了解HashMap之前,先看看啥是哈希表,首先回顾下数组以及链表数组:采用一段连续的 ...

  3. Java面试题4

    一.JAVA基础篇-概念1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机(A ...

  4. MBR内容解析

    原先博客放弃使用,几篇文章搬运过来 MBR(Master Boot Record)即主引导记录. 使用Winhex打开,磁盘的第一扇区: 黄色部分(000H-1B7H):引导分区 作用:在主板BIOS ...

  5. 第三周Access的总结

    一.问;这节课你学到了什么知识? 答:这周我学得比较少,主要是学Access的数据库进行基本的维护. 2.3数据库的基本维护 对Access定期检查,修复是整个数据库重要部分: 1.Access可修复 ...

  6. 阅读笔记4 我是一只IT小小鸟

    经过一周连续三四天八小时以上坐在电脑前敲代码的“折磨”,去看看其他经受这些折磨的人的感受.这次读书笔记变成了逗比风,因为前几周认认真真记下书里写的重点内容,然后把学习的内容认真的记录下来的笔记被老师助 ...

  7. .Wait()与.GetAwaiter()之间有什么区别

    两者都是同步等待操作的结果差异主要在于处理异常.使用Wait,异常堆栈跟踪不会改变并表示异常时的实际堆栈,因此如果您有一段代码在线程池线程上运行,那么您将拥有类似的堆栈 ThreadPoolThrea ...

  8. Vue 父组件ajax异步更新数据,子组件props获取不到

    转载 https://blog.csdn.net/d295968572/article/details/80810349 当父组件 axjos 获取数据,子组件使用 props 接收数据时,执行 mo ...

  9. Java 中的 HttpServletRequest 和 HttpServletResponse 对象

    HttpServletRequest对象详解 javax.servlet.http.HttpServletRequest是SUN制定的Servlet规范,是一个接口.表示请求,“HTTP请求协议”的完 ...

  10. Elasticsearch 自定义多个分析器

    分析器(Analyzer) Elasticsearch 无论是内置分析器还是自定义分析器,都由三部分组成:字符过滤器(Character Filters).分词器(Tokenizer).词元过滤器(T ...