简介

SeaweedFS 是一个简单的、高扩展性的分布式文件系统,是 Fb 的 Haystack 开源版本,相对于传统的分布式文件系统,它在应对小对象存储场景中具有巨大的优势。

SeaweedFS 中每个文件的元信息只有 40 个字节,大大缩减了元信息的存储空间。在磁盘读取内容时也能够在 O(1) 的复杂度内完成。

系统搭建

环境

名称 描述
操作系统 CentOS Linux release 7.4.1708
SeaweedFS 1.25

SeaweedFS 架构描述

在 SeaweedFS 在运行中分为两种角色:Master Server 和普通 Volume Server。

  • Master Server:用于管理普通 Volume Server, master会存储集群中 Volume Server 的状态,并且会负责接收 Client 的请求,并将具体的 URL 地址返回给客户端,master 之间通过 Raft 协议来保证一致性,在主节点崩溃的情况下会自动在从节点中选举中新的 master。
  • Volume Server:管理具体的存储目录,其工作包括写入、查询、删除数据,并会进行数据的压缩工作。

架构图如下:

搭建框架图

在 滴滴云 的单机中搭建 SeaweedFS,框架图如下:

存储系统由一个 master 进程和三个 volume 组成。

搭建流程

启动 master

./weed -port=9333 master

启动一个 master,并将其端口设置为 9333。

启动 Volume Server

  • 新建三个用于存储数据的目录,分别为 data1、data2、data3
  • 启动 Volume Server:

./weed volume -dir="/home/dc2-user/seaweedfs/data1" -max=5 -mserver="localhost:9333" -port=8011 &
./weed volume -dir="/home/dc2-user/seaweedfs/data2" -max=5 -mserver="localhost:9333" -port=8012 &
./weed volume -dir="/home/dc2-user/seaweedfs/data2" -max=5 -mserver="localhost:9333" -port=8013 &

上传一个文件

  • 首先向 master 请求获得一个 fid:

curl http://localhost:9333/dir/assign
  • 本次实验获得信息如下:

{"fid":"1,0148ac185f","url":"127.0.0.1:8012","publicUrl":"127.0.0.1:8012","count":1
  • 上传文件
    根据 master 返回的 fid 和 URL 地址,上传文件到 SeaweedFS 中:

curl -F file=@/home/dc2-user/rpms/test.rpm http://127.0.0.1:8012/1,0148ac185f
  • 上传的 URL 根据 fid 和 URL 拼凑得到。

  • 删除文件
    根据 fid 删除文件:

curl -X DELETE http://127.0.0.1:8012/1,0148ac185f
  • 读取文件
    需要根据存储的 fid 来读取文件,fid 中逗号之前的数字为 volume id,本次实验的 fid:7,02e42e5935

    可以得出volume id为7

    向 master 请求,获取特定 volume id 的 IP 地址:

curl http://localhost:9333/dir/lookup?volumeId=7
  • 返回的数据如下:

{"volumeId":"7","locations":[{"url":"127.0.0.1:8011","publicUrl":"127.0.0.1:8011"}]}
  • 可以得到 URL 为 127.0.0.1,用户可以根据 http://127.0.0.1:8011/7,02e42e5935 来获取这个文件。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2637586/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31559758/viewspace-2637586/

基于滴滴云搭 SeaweedFS 存储系统相关推荐

  1. 基于滴滴云服务器搭建 Consul 集群

    前言 Consul 是什么 Consul 是用 Go 开发的分布式服务协调管理的工具,它提供了服务发现,健康检查,Key/Value 存储等功能,并且支持跨数据中心的功能. Consul 基本概念 A ...

  2. 基于滴滴云搭建微信小程序

    微信小程序自 2017 年推出以来,以其轻量级级特性,为传统移动互联网格局带来了极大的震动.相对于传统 APP,小程序无需下载,即扫即用,用完即走,极大的节省了手机的空间,提高了用户使用的便利性. 本 ...

  3. 基于滴滴云的棋牌游戏服务端架构设计

    现在小团队开发的棋牌游戏有很多,棋牌行业的相互攻击是非常普遍的现象,同行之间往往会采取 DDOS.CC 等攻击的手段来打击对手,这是目前棋牌运营商们面临的比较严峻的一个问题,那么在设计棋牌游戏服务端架 ...

  4. 基于滴滴云搭建安全稳定的 Memcached 服务器

    介绍 Memcached 是一种内存 cache 系统,通过将一些高频使用和最近经常访问的信息储存在内存中,可以明显地优化访问后端数据库的性能. 直观上来看,借助于 Memcached 组件,可以大量 ...

  5. 基于滴滴云安装 Docker 并上传镜像到滴滴云 Docker 仓库

    前言 Docker 简化了容器中应用程序进程的管理过程.容器允许您在资源隔离的进程中运行应用程序.容器与虚拟机类似,但容器更便携.更资源友好,并且更依赖于主机操作系统. 本文将介绍如何用滴滴云服务器在 ...

  6. 基于滴滴云主机搭建 FTP 文件共享服务器(一)

    FTP 简单介绍 什么是 FTP 服务器? FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件共享存储和访问服务的计算机,它们依照 FTP 协议提供服务. ...

  7. 基于滴滴云虚拟机的TensorFlow搭建与使用

    前言 随着AI算法不断发展,对应的应用领域也越来越广泛,比如自动驾驶.语音机器人等技术已经越来越贴近人们的生活.但是AI庞大的算法体系让工程师们望而却步,不知道该如何使用这些算法来解决工程中的实际问题 ...

  8. 基于滴滴云搭建 Ceph 开发环境

    相关依赖包安装 安装依赖包 yum install libtool gcc gcc-c++ libuuid-devel keyutils-libs-devel libblkid-devel redha ...

  9. 基于滴滴云搭建 Lustre 分布式文件系统

    1. Lustre简介 Lustre 是一个具有高可用.高性能.可扩展的分布式文件系统.主要由 Manage Server.Meta Data Server 和 Data Server 组成.详细介绍 ...

最新文章

  1. 【每日DP】day 5、P1095 守望者的逃离(好像悟到了DP的真谛)难度⭐⭐★
  2. cs通信查询mysql数据库_C#访问和操作MYSQL数据库
  3. 用google代替CSDN的博客搜索功能
  4. 如何用JavaScript实现2+2=5?
  5. windows 10 开启全盘瞬间索引功能
  6. python中的画布背景设置_教你用python画图—Turtle详细教程
  7. 缓存与数据库一致性保证
  8. 【python问题系列--4】ValueError: operands could not be broadcast together with shapes (100,3) (3,1)...
  9. C++自定义函数类型——typedef的使用
  10. CSDN—编写博客(快捷键)
  11. 在现有计算机内安装另一个硬盘的原因,您有一台运行Windows7的计算机。您在计算机中安装第二个内部硬盘驱动器。您尝试创建一个系统映像,.. - 上学吧找答案...
  12. 用python实现计算器
  13. Ubuntu16.04 安装搭建RED5流媒体服务器
  14. python视频转图片
  15. AC自动机(Automaton)
  16. 计算机网络为什么要分层,从形而上到形而下视角的理解
  17. Wireshark抓取VLAN包
  18. 高中数学集合知识点小题解题方法
  19. mybatis一对多关系多表查询去重,不定条件查询,duplicated column id
  20. Python小技 不到100行代码制作各种证件照

热门文章

  1. 【算法导论】生日悖论
  2. 常用 XSS Payload
  3. [网友问答1]STM32驱动PCF8591模块,实现AD/DA转换
  4. 解决idea集成maven在使用骨架构建项目报错问题
  5. 英文版sketch如何转为中文版?sketch英文转为中文教程!
  6. matlab编写拉格朗日插值代码函数
  7. ubuntu插入U盘,无法识别
  8. linux自动启动 oracle
  9. 实验........
  10. linux-shell脚本