zoukankan      html  css  js  c++  java
  • redis主从+哨兵 安装配置一

    一、目的

      实现redis的高可用。

    二、同步过程

    注意:
    当Master在后台把数据保存到快照文件完成之后,Master会把这个快照文件传送给Slave,而Slave则把内存清空后,加载该文件到内存中;

    全量复制
      实现原理:建立主从关系时,从机会给主机发送sync命令,主机接收命令,后台启动的存盘进程,同时收集所有用于修改命令,传送给从机。
    增量复制
      实现原理:主机会继续将新收集到的修改命令依次传给从机,实现数据的同步效果。

    三、高可用方案

      M代表master,R代表slave,S代表sentinel

    方案一:

      两台机器,一主一从,两个哨兵

      优点:简单

      缺点:因为redis和sentinel是两个进程,如果能保证sentinel进程不挂,那么这个是可以满足failover的。但是这是无法保证的。

    方案二:

      三台机器,1主2从,三个哨兵,这个方案可以满足业务需求,但是并不能保证绝对不丢失数据,因为,redis同步是异步的,所以肯定会存在丢失情况,只能将丢失控制到最小化,需要设置参数:

      min-slaves-to-write 1

      min-slaves-max-lag 10

      解释:如果至少有 min-slaves-to-write 个从服务器, 并且这些服务器的延迟值都少于 min-slaves-max-lag 秒, 那么主服务器就会执行客户端请求的写操作。
    可以将这个特性看作 CAP 理论中的 C 的条件放宽版本:
    尽管不能保证写操作的持久性, 但起码丢失数据的窗口会被严格限制在指定的秒数中。

    方案三:

      由于服务器资源紧张,可以将sentinel进程放在其他客户端上。这样可以省一台服务器。

      slaveof ip port 指定成为谁的从服务器。

  • 相关阅读:
    【SqlServer系列】表达式(expression)
    【SqlServer系列】语法定义符号解析
    Docker常用命令<转>
    VMware下的Centos7联网并设置固定IP
    redis的setbit命令
    Java并发编程:并发容器之CopyOnWriteArrayList<转>
    Java并发编程:volatile关键字解析<转>
    Java并发编程:阻塞队列 <转>
    Java并发编程:Lock和Synchronized <转>
    Jackson学习笔记(三)<转>
  • 原文地址:https://www.cnblogs.com/ZHUJIBlogs/p/10375624.html
Copyright © 2011-2022 走看看