zoukankan      html  css  js  c++  java
  • fastdfs的同步原理(一)

     FastDFS文件同步采用binlog异步复制方式。storage server使用binlog文件记录文件上传、删除等操作,根据binlog进行文件同步。binlog中只记录文件ID和操作,不记录文件内容。下面给出几行binlog文件内容示例:

    1572660675 C M00/00/00/oYYBAF285cOIHiVCAACI-7zX1qUAAAAVgAACC8AAIkT490.txt

    1572660827 c M00/00/00/oYYBAF285luIK8jCAAAJeheau6AAAAAVgABI-cAAAmS021.xml

    1572660911 D M00/00/00/oYYBAF285cOIHiVCAACI-7zX1qUAAAAVgAACC8AAIkT490.txt

    1572660967 d M00/00/00/oYYBAF285luIK8jCAAAJeheau6AAAAAVgABI-cAAAmS021.xml

      从上面可以看到,binlog文件有三列,依次为时间戳、操作类型和文件ID(不带group名称)。

      文件操作类型采用单个字母编码,其中源头操作用大写字母表示,被同步的操作为对应的小写字母。文件操作字母含义如下:

        C :上传文件(upload)

        D:删除文件(delete)

        A:追加文件(append)

        M:部分文件更新(modify)

        U:整个文件更新(set metadata)

        T:截断文件(truncate)

        L:创建符号链接(文件去重功能,相同内容只保存一份)

      

      同组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行。文件同步只在同组内的storage server之间进行,采用push方式,即源头服务器同步给本组的其他存储服务器。对于同组的其他storage server,一台storage server分别启动一个线程进行文件同步。

      文件同步采用增量方式,记录已同步的位置到mark文件中。mark文件存放路径为 $base_path/data/sync/。mark文件内容示例:

    binlog_index=3

    binlog_offset=382

    need_sync_old=1

    sync_old_done=1

    until_timestamp=1571976211

    scan_row_count=2033425

    sync_row_count=2033417

      采用binlog的异步复制方式,必然存在同步延迟的问题,比如mysql的主从数据同步

  • 相关阅读:
    vue-cli element axios sass 安装
    Rem-- ui图与适配手机的px换算
    REM
    Canvas画半圆扇形统计图
    在vue中安装SASS
    在vue中引用.SCSS的公用文件
    Echart--折线图手柄触发事件
    vue 脚手架webpack打包后,解决能看到vue源码的问题
    js 函数 /变量/ 以及函数中形参的预解析的顺序
    【算法日记】4.递归和快速排序
  • 原文地址:https://www.cnblogs.com/llddhh/p/15655096.html
Copyright © 2011-2022 走看看