FastCFS binlog机制简介

2023-11-15

FastCFS binlog机制简介

本篇文章转载于 FastCFS 作者 余庆 大佬的 FastDFS分享与交流 公众号。

FastCFS 采用经典的 Master/Slave 结构及数据同步复制的做法。如果 slave 在线,master 同步调用 slave;否则 slave 将进入数据恢复阶段,追上 master 的最新进度后,slave 切换为在线状态,此后 master 将数据同步复制到 slave

FastCFS 采用 binlog 记录数据更改操作,binlog 中不会记录变更(如写入)的文件内容,binlog 相当于是数据索引,非常简洁。

FastCFSbinlog 的两大用途:

一、实现数据索引持久化存储,程序启动时通过重放 binlog 加载数据索引;
二、slave 数据恢复时从 master 拉取缺失的 binlog,然后基于该 binlog 进行数据恢复。

大家直观感受一下如下所示的 binlog 片段:
在这里插入图片描述
第一列为 更改时间unix时间戳),第二列为 数据版本号。多个数据副本的分布式系统要保证数据强一致性,就必须保证更改操作的顺序。采用单调递增的数据版本号,是严格保证更改顺序的有效方法,这正是上一篇文章最后留下的悬念解答。

FastCFS 支持 master 失效时自动切换(failover),极端情况下发生 master 切换后,可能会导致 原master新master上的 binlog 部分数据不一致,而不一致的 binlog 数据只会在 binlog 文件的尾部,我们只需对最后 N 条(如3条)binlog 进行校验即可。如果 slave 最后 Nbinlogmaster 对账失败,slave 会退出运行,需要人工修复 binlog(通常只需删除最后一条 binlog)后该 slave 方可正常启动。

FastStore 模块有 binlog:用于 slave 数据恢复的 replica binlog 和用作数据索引的 slice binlog。对于一次更新操作,先写 slice binlog,然后写 replica binlog。一次更新操作对应两次 binlog 写入,如何保证两次写入的事务性呢?FastCFS 不允许写 binlog 失败,只有程序异常终止时(比如掉电、程序挂掉),二者才有可能不一致。因此写入 binlog 时不做校验,程序启动时对两个 binlog 进行对账,去掉尾部多余的 binlog 记录即可。

FastCFSmaster 同步调用 slave 完成后才写 binlog,为什么不选择在调用 slave 前写 binlog 呢?master 写入 binlog 的时机是有讲究的,这个问题就留给大家了。

最后总结一下,FastCFSbinlog 是保证数据一致性的重要机制,binlog 自身做到一致性非常关键,FastCFS 采用的是 binlog 对账机制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastCFS binlog机制简介 的相关文章

随机推荐

  • 托管和非托管的区别

    NET Framework 是一种新的计算平台 它简化了在高度分布式 Internet 环境中的应用程序开发 NET Framework 旨在实现下列目标 提供一个一致的面向对象的编程环境 而无论对象代码是在本地存储和执行 还是在本地执行但
  • AIX系统修改系统时间

    linux下用date s 20131215 09 02 25 把时间设为2013年12月15日9点2分25秒 而aix呢 它不认 s这个参数 date n mmddHHMMYY mm表示月分 dd表示日期 HH表示小时 MM表示分钟 YY
  • 关于最近面试的通过2个offer然后被刷

    一个是面试通关了 薪资也谈好了 然后发offer 时候跟我说跟别人名字搞错了 浪费我我的时间 还有一个人面试通过 也给我发了面试通过的 也给我发了offer工资也谈拢了 说需要一周的审批 然后后面问我工作年限 说我不够工作年限 要求之前多少
  • qq讨论组显示连接服务器异常,QQ讨论组出现大面积故障 腾讯回应:因服务器异常 已紧急修复...

    原标题 QQ讨论组出现大面积故障 腾讯回应 因服务器异常 已紧急修复 TechWeb报道 8月25日消息 今天上午 大量网友反映称QQ讨论组功能出现Bug 具体症状为 在讨论组内发送一条信息就会被自动创建一个新的讨论组 而且历史消息记录全部
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】最长公共后缀

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 最长公共后缀 知识点排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 编写一个函数来查找字符串数组中的最长公共后缀 如果不存在公共后缀 返回固定字符串 Zero 补
  • matplot 画条形图

    import matplotlib pyplot as plt import numpy as np import pandas as pd plt show America New York 1251 Unknown 521 Americ
  • 18724 二叉树的遍历运算

    先序遍历的顺序是 根左右 中序遍历的顺序是 左根右 l1表示先序遍历的左边界 r1表示先序遍历的右边界 l2表示中序遍历的左边界 r1表示中序遍历的右边界 下面以题目的输入样例为例做分析 输入样例 abcde bcade 当i到达最后落点时
  • 毕设—基于树莓派的家居环境智能监测系统设计与实践

    一 资料查找工具 英文文献 Sci Hub Academic Navigation Site To remove all barriers in the way of science 中文文献 VPN书童图书馆 知网免费下载知网免费入口论文
  • Dropdown 下拉框(el-dropdown-menu)内容过长显示‘...’ 鼠标悬浮显示全部

    问题描述 使用element的Dropdown 下拉框 el dropdown menu 内容过长显示 鼠标悬浮显示全部 有时候内容太长导致文字换行与其它文字折叠展示 如下图所示 解决方案 直接上代码
  • PVE虚拟化平台之安装iStoreOS软路由系统

    PVE虚拟化平台之安装iStoreOS软路由系统 一 iStoreOS介绍 二 登录PVE平台检查系统状态 三 创建虚拟机 1 虚拟机常规设置 2 操作系统配置 3 系统配置 4 磁盘配置 5 CPU配置 6 内存设置 7 网络设置 8 确
  • plt.subplots()

    首先一幅Matplotlib的图像组成部分介绍 在matplotlib中 整个图像为一个Figure对象 在Figure对象中可以包含一个或者多个Axes对象 每个Axes ax 对象都是一个拥有自己坐标系统的绘图区域 所属关系如下 sub
  • Python操作ElasticSearch条件查询

    一 基本操作 1 列表元素之一查询 如 terminalType pc mobile 正确用法 GET http 0 0 0 0 8200 amis action data data search size 10000 查询条件 Ps 数组
  • 【转】内存数据库、关系型数据库和非关系型数据库

    内存数据库 关系型数据库和非关系型数据库 一 内存数据库 关系型数据库和非关系型数据库 1 个人观点 二 内存数据库 Redis MongoDb SQLite Oracle等 三 Raft分布式协议 四 Redis出现宕机 如何保证数据不丢
  • python极限学习机ELM做一个简单的分类

    最近事太多 只能下班后挤时间学习 缓慢更新 华丽的分割线 极限学习机是我们实验室的元老了 是一种单隐层前馈神经网络 SLFN 学习算法 这种算法只需要设置网络的隐层节点个数 执行过程中不需要调整网络的输入权值以及隐元的偏置 并且产生唯一的最
  • 哈希表查找——成功和不成功时的平均查找长度

    哈希表查找 成功和不成功时的平均查找长度 以下求解过程是按照 计算机统考的计算方法 不同的老师 教材在 处理冲突 上可能会有不同的方法 所以最主要的是掌握原理即可 对于考研的朋友最好掌握统考真题的解题方法 题目 例子 2010年全国硕士研究
  • 13.Python列索引值

    1 基础Python vi 6csv reader column by index py encoding utf 8 usr bin env python3 import csv import sys input file sys arg
  • mmsegmentation V0.27.0环境搭建(一)

    1 官网 2 兼容的MMSegmentation和MMCV版本如下 请安装正确版本的MMCV 以避免安装问题 3 Installation Linux系统环境安装 1 创建虚拟环境并安装pytorch Step 1 Create a con
  • ProtoBuf-反射原理与使用

    文章目录 前言 相关应用场景 一 ProtoBuf 反射原理概述 1 获取message和service的属性和方法 1 1 使用protoc将proto文件生成 h和 cc文件 1 2 只使用proto文件 不使用protoc进行编译 1
  • Gvim高级操作006--verilog例化代码对齐

    Gvim高级操作006 verilog例化代码对齐 Gvim如果没有安装对齐插件的情况下 无法通过快捷操作实现verilog例化代码对齐 但是可以通过正则表达式匹配插入空格实现代码对齐 基本原理是 删除空格 点号 和信号之间不能有空格 左括
  • FastCFS binlog机制简介

    FastCFS binlog机制简介 本篇文章转载于 FastCFS 作者 余庆 大佬的 FastDFS分享与交流 公众号 FastCFS 采用经典的 Master Slave 结构及数据同步复制的做法 如果 slave 在线 master