FastDFS是如何解决数据一致性问题的?

2023-10-27

FastDFS是如何解决数据一致性问题的?

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

保证数据一致性是分布式系统面临的最大难题,尤其是要做到数据强一致性。

FastDFS 作为一款分布式文件系统,是如何解决数据一致性的呢?

FastDFS 以简洁高效著称,其轻量级定位以及应用场景决定其不会采用复杂的解决方案。因此 FastDFS 放弃强一致性,采用弱一致性和最终一致的做法。

FastDFS文件ID 是服务端生成的,其中包含了 storage ID或IP地址文件创建时间CRC32校验码文件大小随机数 等字段。

FastDFS 文件ID 的生成机制决定了可以在任意一台 storage server 上传文件而不用担心文件名和同组的其他 storage server 生成的文件冲突。

出于性能和简洁考虑,FastDFS 复制文件采用异步方式,这是保证数据最终一致的做法。

FastDFS 为了支持文件修改,引入了 appender 这一文件类型。FastDFS 支持对 appender 类型的文件进行修改和追加等操作。

如果在两台 storage server 上修改同一个 appender 文件(即使在顺序修改的情况下),可能就会因为时序问题导致数据不一致的现象发生。

为了解决这个问题,FastDFS 采取的做法是,对appender 文件的修改以及对文件的删除只能在 源storage server 上进行。

FastDFS 直接借助底层文件系统来存储和管理文件。

在文件复制过程中,为了避免应用端读到不完整的数据,storage server 采用先写临时文件,完成后再改名的做法。

为了保证数据完整性以及在异常情况下不覆盖上个版本的数据,tracker serverstorage server 写入重要的数据文件时,均采用了先写临时文件,然后改名的做法。

感谢你的阅读,希望 FastDFS 采用的数据一致性做法对你所有帮助和启发。

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

FastDFS是如何解决数据一致性问题的? 的相关文章

  • 阿里云服务器搭建fastdfs

    fastdfs安装介绍 环境准备 本人的阿里云服务器CentOS Linux release 7 9 2009 Core 版本 xff08 通过命令cat etc redhat release查看自己的Linux版本信息 xff09 过程中
  • FastDFS 搭建与客户端编写

    FastDFS 搭建与客户端编写 文件服务器 服务器搭建 https github com qbanxiaoli fastdfs 客户端编写 依赖 span class token tag span class token tag span
  • C++文件服务器项目—FastDFS—1

    C 43 43 文件服务器项目 FastDFS 1 前言1 项目架构2 分布式文件系统2 1 传统文件系统2 2 分布式文件系统 3 FastDFS介绍3 1 fdfs概述3 2 fdfs框架中的三个角色3 3 fdfs三个角色之间的关系3
  • C++文件服务器项目—Nginx+FastDFS插件—5

    C 43 43 文件服务器项目 Nginx 43 FastDFS插件 5 前言1 文件上传下载流程1 1 文件上传流程1 2 文件下载流程1 3 文件下载优化流程 2 Nginx和fastDFS插件2 1 安装Nginx和fastdfs n
  • Docker部署fastdfs单机版

    1 拉取镜像 docker pull registry cn beijing aliyuncs com tianzuo fastdfs 2 创建映射目录 mkdir p home Data mkdir p home Html Data是fa
  • 分布式文件系统 - FastDFS 在UBUNTU下安装

    分布式文件系统 FastDFS 在 CentOS 下配置安装部署 按照该博主的介绍 大部分安装操作正常 只是在创建软连接的时候报错 所以只好用笨办法启动和关闭 启动tracker usr bin fdfs trackerd etc fdfs
  • Springboot 封装Fastdfs 功能模块

    整体项目结构 第一步 BuleSky 的pom xml 文件
  • 3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案

    3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 文章目录 3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 1 最初级的缓存不一致的问题以及解决方案 1 1 问题 先修改数据库 在删除缓存 如果删除缓存失败了 就会导致数据
  • FastDFS使用中的几个常见问题

    FastDFS使用中的几个常见问题 本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号 1 FastDFS适用的场景以及不适用的场景 FastDFS 是为互联网应用量身定做的一套分布式文件存储系统 非常适合用来
  • docker安装fastdfs

    一 准备docker环境 二 搜索fastdfs镜像 三 拉取镜像 docker pull delron fastdfs 选取delron fastdfs镜像的原因是包含了nginx不用自己安装nginx转发 也可以选择qbanxiaoli
  • fastDFS文件服务器的java客户端初始化方法ClientGlobal.init(fdfs_client.properties) 找不到配置文件路径异常的解决

    最近在使用fastDFS文件服务器的java客户端上传文件时 它的初始化方法ClientGlobal init String 出现找不到配置文件的异常 无论是写死fdfs client properties文件位置还是怎样 都找不到配置文件
  • FastDFS 学习笔记

    一 理论基础 FastDFS比较适合以中小文件为载体的在线服务 比如跟Nginx Apache 配合搭建图片服务器 分布式文件系统FastDFS FastDFS是纯C语言实现 只支持Linux FreeBSD等UNIX系统 FastDFS的
  • 使用docker部署fastdfs集群版

    一 前言 本文档说明在node01和node02两台主机上安装部署FastDFS双节点 node01 ip 198 168 1 121 安装tracker1 storage1 node02 ip 198 168 1 122 安装tracke
  • FastDFS性能调优 know how

    FastDFS性能调优 本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号 众所周知 软件性能调优不是一撮而就的事情 它是一个反复磨合的过程 下面介绍FastDFS 几个性能调优相关的重要参数 供大家参考 1
  • FastDFS分布文件系统Java客户端使用

    原文链接 http blog csdn net xyang81 article details 52847311 FastDFS分布式文件系统服务安装和使用请参考上一篇文章 FastDFS分布式文件系统安装与使用 单节点 担建环境 官网Ja
  • ubuntu 安装Fastdfs

    安装fastdfs依赖插件libfastcommon 下载 https github com happyfish100 libfastcommon archive V1 0 39 tar gz 创建 usr local software 目
  • FastDFS的Tracker及Storage节点添加及删除

    1 增加Storage节点 通过配置 自动加入 1 安装Storage并配置mod fastdfs conf及storage conf 设置fdfs storaged及nginx自启动 2 启动新加的storage节点 会自动同步相同gro
  • FastDFS文件同步机制简介

    FastDFS文件同步机制简介 本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号 FastDFS 文件同步采用 binlog 异步复制方式 storage server 使用 binlog 文件记录文件上传
  • FASTDFS磁盘不足10%,如何迁移

    FASTDFS磁盘不足10 如何迁移 fastDFS的默认安装目录为home 产生的文件也会保存在home下的子目录中 由于程序运行 产生的文件越来越多 可能会导致系统盘被占满 这时 需要迁移fastdfs目录到其他硬盘目录 当出现这种情况
  • 使用docker搭建FastDFS文件系统

    使用docker搭建FastDFS文件系统 1 拉取fastdfs镜像 docker search fastdfs 这里要选择 delron fastdfs 镜像 docker pull delron fastdfs 2 启动容器 2 1

随机推荐

  • 在 Windows 下安装 COCO API(pycocotools)

    本内容将介绍在 Windows 下安装 COCO API pycocotools 本来 COCO 对 Windows 是不支持的 不过为了支持 Windows 有人对 COCO 做了一些修改 下面是 COCO 在 GitHub 上源码地址信
  • Echarts 大数据可视化实现

    全国空气质量AQI PM2 5数据可视化源码 1 编程环境为anaconda Jupyter 以下源码已划分好 如使用Jupyter环境编写 请按照顺序写在不同代码块中 注意 若将程序写在一个代码块中 将无法运行 2 源码代码注释的部分为单
  • 【代码随想录】字符串刷题

    字符串刷题 反转字符串 反转字符串II 替换空格 反转字符串中的单词 左旋转字符串 实现 strStr 重复的子字符串 关于字符串类的题目 要不要使用库函数呢 如果使用库函数可以直接做出来 建议不要使用库函数 如果库函数只是题目的一部分 可
  • 关于SYSTICK的COUNTFLAG标志的小疑惑

    前不久在研究SYSTICK有关问题阅读相关技术资料时 无意间产生了个小疑惑 问题是这样的 我们知道SYSTICK定时器是个24位向下计数器 每当发生从1记到0时会让一个名为COUNTFLAG的标志位置1 如果此时SYSTICK的滴答中断请求
  • ChatGPT集锦

    目录 1 一条指令让ChatGPT变的更强大 2 对ChatGPT提问时 常见的10种错误描述 3 Custom instructions如何设置 4 Custom Instructions如何打开 1 一条指令让ChatGPT变的更强大
  • JDBC批量操作

    使用PreparedStatement实现批量数据操作 通过前面学习我们知道 update delete本身就有批量操作的效果 但insert插入数据就需要用到批量操作 实现用PreparedStatement实现更高效的批量插入 用一道练
  • 生成GitHub项目目录的树形结构图

    之前在GitHub中看别人项目的README文档时 总是发现其中会有整个项目的目录结构图 当时还想着是什么工具或者命令快捷生成的 这几天由于整理大批量的文件夹 想看清文件夹下到底有什么文件或者目录 不想一个个的打开看 想直观的看到这个数据收
  • 深度学习系列26:transformer机制

    1 多头注意力机制 首先补充一下注意力和自注意力区别 自注意力有3个矩阵KQV 而注意力只有KV 可以理解为最终结果被用来当做Q了 多头注意力机制在自注意力机制上又加了一层多头的概念 即图中从多个不同角度做attention 用不同的方式初
  • 科学计数法e

    一 基本运算 个人理解 e就表示10 数字很大的数 一般我们用科学记数法表示 例如6230000000000 我们可以用6 23 10 12表示 而它含义是什么呢 从直面上看是将数字6 23中6后面的小数点向右移去12位 若将6 23 10
  • 2017 年 IT 界最严重的裁员事件汇总

    点击上方 程序员大咖 选择 置顶公众号 关键时刻 第一时间送达 裁员年年都有 今年特别多从微软 Oracle IBM 到思科 HPE 再到雅虎 stackoverflow 无论是处于转型变革中的老牌巨头 还是日渐成熟的创新型公司 在动荡的科
  • winform程序:newtonsoft json 序列化时出现 “unterminated string. Excepted delimiter..."

    在写一个winform程序时出现上述错误 开始以为newtonsoft 第三方插件对读取的字符串的长度有限制 也搜索没有用 后来通过读取文件 发现可以序列化 排除newtonsoft插件的问题 后来确定是winform的textbox控件的
  • Android 自定义万能的抽屉布局(侧滑菜单)GenericDrawerLayout

    转载请注明出处 http blog csdn net a740169405 article details 49720973 前言 大家应该对侧滑菜单很熟悉了 大多数是从左侧滑出 其实实现原理是v4支持包提供的一个类DrawerLayout
  • 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果

    使用Python Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1 效果图 2 源码 参考 这篇博客将使用python opencv绘制调色板及圆形来模拟霓虹的渐变效果 1 效果图 可以构造霓虹的渐变效果呦 选择不同的圆心 视觉上的震撼
  • socket实现客户端之间互发消息(有详细说明、源码和运行结果)

    先简单的了解一下socket Socket 翻译成中文 就是 套接字 套接字编程是指编写在网络上的多台计算机之间执行的程序 有两种通信协议 User Datagram Protocol UDP 传输控制协议 TCP UDP是无连接的 这意味
  • Jlink命令行烧录

    1 新建jlink down cmd txt内容如下 usb 50120677 si 1 speed 4000 device STM32l152xE r h erase loadfile D work TMP GPC PBM8 hex r
  • 太原理工大学14年Java试题复习笔计

    2014年Java期末题复习笔计 在方法体中显示抛出异常 throw 声明异常 throws Java组件中 JButton可以实现一个按钮 启用一个线程 需要调用start 方法 notify方法只唤醒一个等待 对象的 线程并使该线程开始
  • TimingDesigner使用——软件概述2

    软件简介 Timing designer是一个画时序图的工具 可以用于在逻辑设计初期 对关键路径进行时序设计 同时具有一定的时序验证功能 利于在设计初期发现问题 减少设计反复 该工具不仅可以用于FPGA逻辑设计 还可以用于PCB的时序设计
  • APMCM亚太地区数学建模历年赛题

    亚太地区数学建模历年赛题 2020年亚太地区数学建模A题 2020年亚太地区数学建模B题 附上小队做的B题 Second Prize 2019年亚太地区数学建模 A题 2019年亚太地区数学建模 B题 2018年亚太地区数学建模 A题 20
  • Java Excel 打开文件报发现“xx.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复问题解决

    问题描述 发现 文件 xlsx 中的部分内容有问题 是否让我们尽量尝试恢复 问题分析 1 后端的导出接口写的不对 又返回流数据 又返回响应体数据 导致前端将流数据和响应体数据都下载到了excel文件中 PostMapping export
  • FastDFS是如何解决数据一致性问题的?

    FastDFS是如何解决数据一致性问题的 本篇文章转载于 FastDFS 作者 余庆 大佬的 FastDFS分享与交流 公众号 保证数据一致性是分布式系统面临的最大难题 尤其是要做到数据强一致性 FastDFS 作为一款分布式文件系统 是如