zoukankan      html  css  js  c++  java
  • FastDfs简单理解

    注:文中大部分素材为网络取材,文字叙述大部分为个人学习和搭建经验所理解,如有误,请谅解辛苦指出。

    一. FastDfs简介

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。

    FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

    以下简称为fds。

    二.fds的工作原理

    1. fds的组成角色

    Tracker:跟踪协调器,负责服务调度,访问负载均衡的作用;
    Storage:存储节点,存储数据、同步、提供存取接口等。

    下图为Client、Storage、Tracker的关系情况:

     2. fds文件上传原理

    Client(用户端)发送文件上传请求给Tracker, Tracker询问可用的Storage,然后返回给Client(用户端)可用Storage的地址,Client(用户端)调用Storage文件上传接口,进行文件上传, Storage完成文件的存储后,返回文件存储信息,此时文件上传工作完成。

    3. fds文件下载原理

    Client(用户端)发送文件下载链接请求给Tracker, Tracker根据链接询问可用的Storage(并检查同步状态),然后返回给Client(用户端)可用Storage的地址,Client(用户端)调用Storage文件下载接口,传递文件信息, Storage根据文件信息进行查找,返回文件的访问。

     

    4. fds文件同步原理

    4.1 客户端将文件上传至Group内一个Storage即认为上传文件成功,Storage存储文件完成后,会由后台线程将文件同步至同Group内其他的Storage。

    4.2 每个Storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,Storage会记录向Group内其他Storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有Server的时钟保持同步。

    4.3 Storage的同步进度会作为元数据的一部分汇报到Tracker上,Tracke在选择读Storage的时候会以同步进度作为参考。

    文件同步工作流程简图:

    流程图解释:
    1. Group内的Storage定时读取BinLog,获取同步进度;

    2. Group内的Storage有数据变化时,将元信息写入BinLog;

    3. Group内的其他Storage读取BinLog后,根据同步进度提示与发生数据变化的Storage进行同步交互;

    *4. 完成同步后,进度信息上传到Tracker,Tracker根据该进度进行与Storage的进度参考。

     5. fds联合原理

    结合原理简图1步骤,启动Storage服务后,会根据配置文件中的Tracker地址主动访问Tracker服务器,进行设备登记;

    结合原理简图2步骤,Tracker服务收到登记后,生成列表,下发至所有同Group内的所有Strorage;

    结合原理简图3步骤,同Group内的Storage根据Tracker下发列表,进行互相关联同步;

    fds联合原理简图:

    注意:
    所有的Tracker都是相对独立的,不会互相联动;
    只有相同Group内的Storage才会进行同步;
    Group的存储空间大小,使用组内Storage最小的空间表示。

  • 相关阅读:
    JS实现表格隔行换色,鼠标经过换色,单击换色,再单击还原等功能
    URL带有其他参数时,如何使用PHP的CI框架分页类?
    linux SVN web 同步
    php播放器代码
    php 获取IP 根据IP 获取城市信息 判断是否手机登陆
    微信公众平台获取微信用户信息
    appcan 本地真机调试
    对于探索搜索网站路上的一些迷茫
    成为全栈工程师真的好吗?
    ServletContext与ServletConfig
  • 原文地址:https://www.cnblogs.com/airlinp/p/12395052.html
Copyright © 2011-2022 走看看