zoukankan      html  css  js  c++  java
  • 复制

    旧版的复制有同步和命令传播

    同步:

    如上图:

    从向主发送sync,主服务器开始bgsave生成RBD并且将bgsave执行过程中执行的命令追加到AOF缓冲区。最后分别发送给从服务区

    如果主服务器被修改了,那么他也需要使用命令传播传给从服务器

    旧版本的复制主要缺陷在于断线后和初始其实是一个样的。

    sync是一个非常耗费性能的命令

    (1)他需要主服务器执行bgsave命令,耗费cpu,内存,磁盘

    (2)网络传输,耗费网络资源

    (3)从服务器执行还原操作,这将会阻塞服务器进程

    新版本的psync命令具有完整重同步和部分重同步

    完整就是最开始和sync其实是一样的

    部分就是知识回复断线过程中的执行命令节省了很多资源

    部分重同步实现:

    (1)主从服务器的复制偏移量

    (2)复制积压缓冲区

    (3)服务器的运行ID

    积压缓冲区的大小默认1MB,其实正常设置的大小是2*重连时间*每次发送的命令的大小

    对于积压缓冲区中其实是偏移量对应着字符

    如果发现偏移量存在,就执行部分重同步,否则执行完整冲同步

    服务器运行ID其实就是server判断是初次还是不是初次,决定执行什么同步

     

    复制:

    1:设置从服务器中主服务器的IP和端口

    (2)创建socket,connect

    (3)发送ping

    测试网络

    测试相应是否可以

    (4)身份验证

    (5)发送端口

    (6)同步

    (7)命令传播

    心跳检测:

    (1)检测网络连接问题

    (2)设置min-slaves选项

    (3)检测命令丢失问题

  • 相关阅读:
    js自定义回调函数
    python:sql建表语句转换为json
    简单list转化为tree结构
    JSP中页面定时刷新
    struts2中<s:select/>标签的运用详解
    Redis 的 Sentinel
    redis持久化(persistence)
    java验证身份证合理性
    js 里面的键盘事件对应的键码
    Struts2中使用OGNL表达式语言访问静态方法和静态属性
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/7078669.html
Copyright © 2011-2022 走看看