FastCFS核心组件FastStore架构及特点

2023-11-15

FastCFS核心组件FastStore架构及特点

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

上一篇文章介绍了 FastCFS 服务端两大核心组件:FastDIRFastStore。其中 FastDIR 管理文件元数据,FastStore 以分块方式存储文件内容。FastDIRFastStore 均采用 Master/Slave 结构,Master 不需要手工配置,由程序自动选举产生,并且做到了 failoverFastDIR 架构是FastStore 架构子集(特例),因此我们着重介绍 FastStore 的架构及其特点。

无图无真相,先上 FastStore 的架构图。
在这里插入图片描述
FastStore 对服务器和数据均采用分组方式,服务器分组简称 SG,为物理分组;数据分组简称 DG,为逻辑分组。

FastStoreserver 各自管理数据块(文件块)索引,数据块的元数据采用无中心的分布式架构。FastStore 本质是一个分布式 KV 系统,key 是数据块所属的对象 ID(inode) + 偏移量(offset)value 是数据块内容。

FastStore 采用的数据路由规则:数据块 key 按数据分组数(DGC)求模得出所在的数据分组,即:block_hash_code % DGC。可见 DGC 一旦确定就不可更改,否则将导致数据访问混乱!如果数据增长远超预期需要增大 DGC,只能搭建一套新集群,在新旧两套集群并存的情况下,把原有数据手工迁移到新集群,迁移完成后切换到新集群。

一个 SG 由一台到多台服务器组成,组内的数据是冗余关系(服务器数即数据副本数)。一个 SG 可以容纳多个 DG,为了充分利用 CPU 等硬件资源,建议生产环境一个 SG 配置的 DG 数量不少于 CPU核数 / 2,开发测试环境至少配置 16 个。建立 FastCFS 集群时,可以只有一组服务器(即一个SG)。为了便于以后增加 SG 进行扩容,DG 数量(DGC)必须事先充足地预估数据规模后确定下来,生产环境建议最小配置 256。友情提示:尽可能乐观地预估数据增长规模,宁多勿少,不存在过犹不及的问题。

FastStore 服务器扩容采用数据分裂的做法,支持在线扩容,可以一次扩容一组服务器。当集群规模较小(比如 SG数 <= 4)时,建议一次扩容一倍。

总结一下 FastStore 的架构特点:

  • 基于数据块的无中心设计(类一致性Hash),理论上可以无限扩容;
  • 分组方式(SG 和 DG),简单高效;
  • 数据分组内采用 Master/Slave 结构,简单有效的数据一致性保证。

保证数据一致性是分布式系统面临的挑战,FastCFS 是如何做到的呢?

敬请期待下回分解。

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

FastCFS核心组件FastStore架构及特点 的相关文章

  • 找不到本地组策略编辑器找不到gpedit.msc 的解决方法

    通常打开本地组策略编辑器 只需要 win R 在运行里输入 gpedit msc 就可以打开 但是 在windows 家庭版和学生版里 会提示找不到路径 可以用以下办法解决 新建一个文本文档 名字随便取 编辑以下批处理内容 保存后将后缀名改
  • 2020/09/28 轮播react-slick报错 can`t resolve ‘react-slick‘

    报错 前提 我已经按照官网安装好了 npm install react slick save npm install slick carousel save 并且引入了css样式 import slick carousel slick sl
  • 强化学习(Reinforcement Learning)知识整理

    马尔可夫决策过程 Markov Decision Processes MDPs MDPs 简单说就是一个智能体 Agent 采取行动 Action 从而改变自己的状态 State 获得奖励 Reward 与环境 Environment 发生
  • 数字IC手撕代码-有限状态机FSM-饮料机

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • Rings‘ Power,性能“世界第一”的Web I/O框架

    UringNet设计的思路和参考 在2019年 从Linux内核5 1开始 引入了io uring这样的异步框架 io uring的设计非常精巧 经过验证 其性能极其强悍 在文件读写的领域已经证明了其巨大的价值 很多数据库系统的底层已经引入
  • 物联网会是下一个支柱产业吗?

    近年来 物联网 IoT 无疑已成为一个重要且快速增长的行业 尽管绝对确定地预测未来具有挑战性 但许多专家和分析师认为 物联网有潜力成为支柱产业 对各个行业产生变革性影响 物联网是指由可以收集 交换和分析数据的互连设备 传感器和系统组成的网络
  • C语言 二级指针的定义与理解

    二级指针定义格式 类型 指针名 例 int p 二级指针用于存储一级指针的内存地址 二级指针赋值实例 int p a int pp p 注意 只能同等类型赋值 不能不同类型赋值 例如 char p a int pp p 因为int占4字节
  • TortoiseGit回退还原指定提交的代码记录

    根据提交日志还原本地的代码 再将本地的代码提交 一 同步本地代码到最新 并查看提交日志 二 选中提交的记录 开始退回本地的代码 三 点击OK 本地代码回退完成 尽量不要点击commit 四 点击OK 查看本地已经退回还原的代码 是否准确 五
  • 计算机毕业设计中用python神经网络编程实现手写数字识别

    本文实例为大家分享了python实现手写数字识别的具体代码 供大家参考 具体内容如下 import numpy import scipy special import matplotlib pyplot class neuralNetwor
  • 浏览器地址栏更改url参数 页面还发送原url参数的请求bug修复

    在做定时刷新大屏的需求 需要定时发送一遍请求刷新最新数据 this timer setInterval gt that getFun1 that getFun2 that getFun3 that getFun4 60 1000 其中get
  • 【Unity疑难杂症#持续更新……】

    目录 1 Unity打包时 自定义shader没效果 2 Unity打包ios时动画不播放 3 Android Unable to merge android manifest Error 4 Unity打到刘海屏的Android手机上不能
  • php上传图片到MySQL数据库代码如下

    效果图入下 用到两个php文件 index php上传图片 img php获取图片 index php代码如下
  • 2023华为OD机试真题 C++【分奖金/单调栈】

    题目 代码 include
  • C++ 标准库

    C 标准库可以分为两部分 标准函数库 这个库是由通用的 独立的 不属于任何类的函数组成的 函数库继承自 C 语言 面向对象类库 这个库是类及其相关函数的集合 C 标准库包含了所有的 C 标准库 为了支持类型安全 做了一定的添加和修改 标准函
  • Seaborn系列教程(5)

    seaborn countplot 计数图 柱状图 解析 使用条形图 柱状图 显示每个分类数据中的数量统计 seaborn countplot x None y None hue None data None order None hue
  • 【Linux】缓冲区/磁盘inode/动静态库制作

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 缓冲区 1 缓冲区的概念 2 缓冲区的意义 3 缓冲区

随机推荐

  • 【mitmproxy】python gui工具与mitmproxy的结合使用

    mitmproxy介绍 mitmproxy是一款流行的开源工具 用于拦截 修改和检查网络流量 它可以在中间人攻击 Man in the Middle 的场景下用于分析 调试和测试网络应用程序 其他地方很多介绍 可以跳过 以下是mitmpro
  • linux内核oops错误码说明,调试 – 了解内核oops错误代码

    在ARM的内核oops中跟踪日志打印在内核日志中 lt 1 gt 4205 112835 I 0 swapper 0 0 c0 Unable to handle kernel paging request at virtual addres
  • FPGA开发(4)——AXI_LITE总线协议

    一 AXI总线简介 对于axi总线的学习我主要是参考了赛灵思的ug1037文档以及arm的INI0022D手册 对其中的内容做了总结 AXI是amba总线的一种 包含三种 axi full axi lite和axi stream AXI工作
  • 关于CentOS7虚拟机配置静态IP地址及ping不通通百度等官网

    一 IP地址的配置 1 查看MAC地址 点击 虚拟机 gt gt gt 设置 gt gt gt 网络适配器 gt gt gt 高级 gt gt gt 记住MAC地址 后面会用到 2 查看子网掩码和网关IP 点击 编辑 gt gt gt 虚拟
  • Vue极简使用

    Vue 安装Vue 模板语法 安装Vue 安装nodejs 这里我安装的是14 5 4版本 https nodejs org download release v14 15 4 解压后配置一下环境变量就行 安装cnpm镜像 这个安装的版本可
  • python小游戏——走出迷宫代码开源

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的 绽放 愿所有的美好 再疫情结束后如约而至 目录 一 游戏代码效果呈现 二 游戏主代码 1
  • 矩阵运算(一)最小二乘法

    最小二乘法 前言 最小二乘法拟合一元多项式的简单推导 进一步的思考 CPP开发者封装最小二乘法 QR分解 Matlab中使用QR分解 Python numpy中使用 参考文献 作者说 前言 最小二乘法在函数拟合的过程中广为应用 不少读者使用
  • Spring Boot Maven Plugin -- repackage目标;spring-boot-maven-plugin的executable配置

    Spring Boot Maven Plugin repackage目标 Spring Boot Maven Plugin插件提供spring boot在maven中的支持 允许你打包可运行的jar包或war包 插件提供了几个maven目标
  • nginx server.conf demo

    server access log Users xx software nginx logs access log error log Users xx software nginx logs error log listen 50001
  • 大数据毕设 - 深度学习安全帽佩戴检测系统(python OpenCV yolov5)

    文章目录 0 前言 1 课题背景 2 效果演示 3 Yolov5框架 4 数据处理和训练 4 1 安全帽检测 4 2 检测危险区域内是否有人 5 最后 0 前言 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这
  • rke2 在线部署 kubernetes

    文章目录 1 还原虚拟机 2 背景 3 介绍 4 预备条件 5 1 配置网卡 5 配置主机名 6 配置互信 7 安装 ansible 8 系统初始化 9 kube master01 部署 9 1 定制配置文件 可选 9 2 部署 9 3 命
  • 微信二维码的生成(java后端)--邀请新人

    目录 写在前言 1 微信官方文档 2 具体分析 写在前言 最近因为在学习微信小程序邀请新用户的功能 所以需要后端生成二维码并且携带本人的用户id或者其他的信息 传给前端 用户通过这个二维码去进行登录或者其他的操作 这时候前端人员记录下来邀请
  • Qt 2D绘图坐标系统

    一 坐标系简介 Qt中每一个窗口都有一个坐标系 默认的 窗口左上角为坐标原点 然后水平向右依次增大 水平向左依次减小 垂直向下依次增大 垂直向上依次减小 原点即为 0 0 点 然后以像素为单位增减 例如 void Dialog paintE
  • Qt之QGraphicsView实战篇

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 前言 前面的章节介绍了 Graphics View 绘图架构 终于到实战了 真的是千呼万唤始出来 这一章节就用 Graphics View 绘图
  • 第二章:Matplotlib之艺术画笔见乾坤

    第二章 艺术画笔见乾坤 一 概述 1 matplotlib的三层api matplotlib的原理或者说基础逻辑是 用Artist对象在画布 canvas 上绘制 Render 图形 就和人作画的步骤类似 准备一块画布或画纸 准备好颜料 画
  • Tomcat重启单个服务

    一个tomcat中有多个服务 每次为了重启某个服务 需要重新启动Tomcat 会影响其他服务的正常运行 可通过以下方式进行设置 进入Tomcat服务管理页面 对单个服务进行管理 1 首先我们启动tomcat 访问主页 可以看到右上位置有三个
  • MYSQL--基础--10--慢查询日志

    MYSQL 基础 10 慢查询日志 1 是什么 是MySQL提供的一种日志记录 支持将日志记录写入文件 将SQL查询时间超过 大于 设置阈值的语句 记录到慢查询日志中 2 查看语句 2 1 慢日志是否开启和日志文件位置 show varia
  • 【yolo】yolov5-seg实例分割标签

    文章目录 前言 yolo标签 yolov5 seg标签 转换代码 前言 不同于以往的yolo数据 用的是目标框的label 再加上语义标签 yolov5 seg中用的标签只有一个语义标签 没有目标框的标签 具体对比如下 yolo标签 1 目
  • java 获取月份 几周_java – 我想在特定的月份获得几周的时间

    Calendar类的WEEK OF YEAR属性可能对您有用 参考 Calendar class 创建一个新的日期 将是一个月的第一天 得到这一天的一周的这个星期 让你说起点价值 创建一个新的日期 这将是给定月份的最后一天 获得今年的一周
  • FastCFS核心组件FastStore架构及特点

    FastCFS核心组件FastStore架构及特点 本篇文章转载于 FastCFS 作者 余庆 大佬的 FastDFS分享与交流 公众号 上一篇文章介绍了 FastCFS 服务端两大核心组件 FastDIR 和 FastStore 其中 F