分布式文件存储系统-FastDFS

这篇具有很好参考价值的文章主要介绍了分布式文件存储系统-FastDFS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        前言:FastDFS 是一个分布式文件存储系统,主要用于存储和管理大规模文件数据,如图片、视频、文档等,是淘宝前架构师为了存储图片用C语言开发出来的系统。

分布式文件存储系统-FastDFS,后端,开发,软件下载安装,分布式


        服务端有两个组件  Tracker Server 与 Storage Server ,对应两个角色:

Tracker: 管理和调度集群,tracker 也可实现集群。每 tracker 节点地位平等。收集 Storage 集群的状态。
Storage: 实际保存文件,,Storage 分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组内成员保存的内容是一样的,组成员的地位是一致的,无主从的概念。

工作原理过程:

        客户端 Client 请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文上传和下载。
        详细而言即,Storage 会定时向 Tracker 上报状态信息,当 Tracker 接到 Client 上传或下载 文件请求,Tracker 查询可用 Storage 并返回对应可用的IP和端口,接下来 Client 才真正地上传或下载文件到 Storage 并会带回一些文件信息(文件名、文件ID)返回 Client。

设计功能:

(1)组内备份,Storager同组内会做备份操作(实时数据同步)
(2)横向扩容(线性扩容),存在这样一种场景:当前太多人访问 Storager1-1 服务器下载,那此时再往里存文件就会导致性能下降,那么就会找到 Storager1-2 里存文件(读写分离的感觉),同时他们的数据是实时同步的,就能达到目的。如果都存满了,就横向扩容到Storager2-1。
(3)负载均衡能力。

查询方式:

        FastDFS 通过文件名或文件 ID 来定位和访问文件。它不支持复杂的查询操作。

具有特性:

  1. 高性能:FastDFS采用了多级缓存、分布式存储等技术,具有较高的I/O性能。
  2. 高可用:FastDFS支持文件副本,可以自动进行故障转移,确保数据的可靠性。
  3. 高并发:FastDFS可以同时处理大量的文件上传、下载请求,适用于高并发场景。
  4. 易扩展:FastDFS可以通过添加存储服务器来扩展存储容量,支持在线扩容

适用场景:
        FastDFS 适用于大数据处理、云存储、内容分发等场景,特别是对大文件存储和高并发访问有要求的场景。

以下给出Django配置示例:

(1)安装 FastDFS 的 Python 客户端库(如 fdfs_client-py)

pip install fdfs_client-py

(2)Django中FastDFS配置相关环境变量与配置默认的文件存储后端:

# django⽂件存储
DEFAULT_FILE_STORAGE = 'xxx.FastDFSStorage'  # 替换为实际的存储后端类路径
# FastDFS
FDFS_BASE_URL = 'http://系统IP:对应开放端口/'  # FastDFS 访问地址(注意结尾的斜杠)
FDFS_CLIENT_CONF = 'xxx/client.conf'  # FastDFS 客户端配置文件路径

(3)创建一个 Django 存储后端类,用于将文件上传到 FastDFS,比如:
 文章来源地址https://www.toymoban.com/news/detail-646243.html

from django.core.files.storage import Storage
from django.conf import settings
from fdfs_client.client import Fdfs_client

class FDFSStorage(Storage):
    def __init__(self, client_conf=None, base_url=None):
        if client_conf is None:
            client_conf = settings.FDFS_CLIENT_CONF
        if base_url is None:
            base_url = settings.FDFS_URL

        self.client_conf = client_conf
        self.base_url = base_url

    def _open(self, name, mode='rb'):
        pass

    def _save(self, name, content):
        # 创建 FastDFS 客户端
        client = Fdfs_client(self.client_conf)

        # 上传文件
        result = client.upload_by_buffer(content.read())

        # 检查上传结果
        if result.get('Status') != 'Upload successed.':
            raise Exception('Upload file to FastDFS failed')

        # 返回文件名
        return result.get('Remote file_id')

    def exists(self, name):
        return False

    def url(self, name):
        return self.base_url + name

到了这里,关于分布式文件存储系统-FastDFS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式文件系统 SpringBoot+FastDFS+Vue.js【一】

    操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 常见的文件系统:FAT16/FAT32、NTFS、HFS、UFS、APFS、XFS、Ext4等 。 分布式文件系统(Distributed File System,DFS) 是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网

    2024年02月20日
    浏览(46)
  • 在Docker里安装FastDFS分布式文件系统详细步骤

    使用docker镜像构建tracker容器,用于启动跟踪服务器,起到调度的作用。 其中-v参数将本地的目录与容器中的/var/fdfs目录进行挂载 使用的网络模式是–net=host –name容器名 -d后台启动 使用docker镜像构建storage容器,用于启动存储服务器,提供容量和备份服务。 在执行下面命令时

    2024年02月03日
    浏览(32)
  • 分布式文件系统 SpringBoot+FastDFS+Vue.js【四】

    案例有些不足 功能太简单 功能复杂可以做一个类似网盘的文件管理系统 仅仅学习使用某些功能 暂不深入开发 有兴趣的伙伴可以尝试一番 类似于阿里云oss

    2024年02月20日
    浏览(38)
  • 分布式文件系统 SpringBoot+FastDFS+Vue.js【三】

    7.2.1.Admin 7.2.2.Menu 7.2.3.MenuBean 7.2.4.Role 7.2.5.RoleMenu 7.4.1.AuthContextHolder 7.4.2.HttpUtils 7.4.3.StringUtils 7.4.4.JwtHelper 7.4.5.MD5 7.4.6.ShiroMD5 7.5.1.AdminMapper.xml 7.5.2.MenuMapper.xml 7.5.3.RoleMenuMapper.xml 7.5.4.AdminMapper 7.5.5.MenuMapper 7.5.6.RoleMenuMapper 7.6.1.AdminService 7.6.2.MenuBeanService 7.6.3.MenuService 7.6.4.RoleMenu

    2024年02月22日
    浏览(39)
  • 开源轻量级分布式文件系统FastDFS本地部署并实现远程访问服务器

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考

    2024年02月04日
    浏览(65)
  • C++ 网络编程项目fastDFS分布式文件系统(四)-fastCGI项目相关技术以及linux搜狗输入法相关问题。

    目录 1. Nginx作为web服务器处理请求 2. http协议复习       Get方式提交数据 Post方式提交数据 3. fastCGI   3.1 CGI  3.2 fastCGI 3.3 fastCGI和spawn-fcgi安装         1. 安装fastCGI     2. 安装spawn-fcgi 3.4 nginx fastcgi     4其他知识点 1. fastCGI环境变量 - fastcgi.conf  2. 客户端使用Post提交数据

    2024年02月12日
    浏览(42)
  • Hadoop:HDFS--分布式文件存储系统

    目录   HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir  查看目录内容 -ls  上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendToFile HDFS文件移动 -mv  删除HDFS文件 -rm  

    2024年02月09日
    浏览(53)
  • 淘宝分布式文件存储系统( 三 ) -TFS

    目录 : 文件重新映射的接口介绍 文件映射 mmap_file.cpp的实现 进行测试 文件重新映射 (增加 或者 减少 文件映射区域的大小) mremap() 函数的原型如下 #include sys/mman.h void *mremap( void * old_address , size_t old_size , size_t new_size , int flags ); 参数说明 : old_address :指向原映射区域的起始地

    2024年02月07日
    浏览(40)
  • 淘宝分布式文件存储系统( 二 ) -TFS

    淘宝分布式文件存储系统( 二 ) -TFS 目录 : 大文件存储结构 哈希链表的结构 文件映射原理及对应的API 文件映射头文件的定义 大文件存储结构 : 采用块(block)文件的形式对数据进行存储 , 分成索引块,主块 , 扩展块 。所有的小文件都是存放到主块中的 ,扩展块用来保存溢出的数

    2024年02月07日
    浏览(33)
  • Zookeeper的分布式文件系统与存储

    Zookeeper是一个开源的分布式协调服务,它为分布式应用提供一致性、可靠性和可扩展性等特性。Zookeeper的核心功能包括集群管理、配置管理、领导选举、分布式同步等。在分布式系统中,文件系统和存储是非常关键的组成部分,Zookeeper作为分布式协调服务,也可以用于管理和

    2024年02月20日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包