基于滴滴云搭 SeaweedFS 存储系统
简介
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 存储系统相关推荐
- 基于滴滴云服务器搭建 Consul 集群
前言 Consul 是什么 Consul 是用 Go 开发的分布式服务协调管理的工具,它提供了服务发现,健康检查,Key/Value 存储等功能,并且支持跨数据中心的功能. Consul 基本概念 A ...
- 基于滴滴云搭建微信小程序
微信小程序自 2017 年推出以来,以其轻量级级特性,为传统移动互联网格局带来了极大的震动.相对于传统 APP,小程序无需下载,即扫即用,用完即走,极大的节省了手机的空间,提高了用户使用的便利性. 本 ...
- 基于滴滴云的棋牌游戏服务端架构设计
现在小团队开发的棋牌游戏有很多,棋牌行业的相互攻击是非常普遍的现象,同行之间往往会采取 DDOS.CC 等攻击的手段来打击对手,这是目前棋牌运营商们面临的比较严峻的一个问题,那么在设计棋牌游戏服务端架 ...
- 基于滴滴云搭建安全稳定的 Memcached 服务器
介绍 Memcached 是一种内存 cache 系统,通过将一些高频使用和最近经常访问的信息储存在内存中,可以明显地优化访问后端数据库的性能. 直观上来看,借助于 Memcached 组件,可以大量 ...
- 基于滴滴云安装 Docker 并上传镜像到滴滴云 Docker 仓库
前言 Docker 简化了容器中应用程序进程的管理过程.容器允许您在资源隔离的进程中运行应用程序.容器与虚拟机类似,但容器更便携.更资源友好,并且更依赖于主机操作系统. 本文将介绍如何用滴滴云服务器在 ...
- 基于滴滴云主机搭建 FTP 文件共享服务器(一)
FTP 简单介绍 什么是 FTP 服务器? FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件共享存储和访问服务的计算机,它们依照 FTP 协议提供服务. ...
- 基于滴滴云虚拟机的TensorFlow搭建与使用
前言 随着AI算法不断发展,对应的应用领域也越来越广泛,比如自动驾驶.语音机器人等技术已经越来越贴近人们的生活.但是AI庞大的算法体系让工程师们望而却步,不知道该如何使用这些算法来解决工程中的实际问题 ...
- 基于滴滴云搭建 Ceph 开发环境
相关依赖包安装 安装依赖包 yum install libtool gcc gcc-c++ libuuid-devel keyutils-libs-devel libblkid-devel redha ...
- 基于滴滴云搭建 Lustre 分布式文件系统
1. Lustre简介 Lustre 是一个具有高可用.高性能.可扩展的分布式文件系统.主要由 Manage Server.Meta Data Server 和 Data Server 组成.详细介绍 ...
最新文章
- 【每日DP】day 5、P1095 守望者的逃离(好像悟到了DP的真谛)难度⭐⭐★
- cs通信查询mysql数据库_C#访问和操作MYSQL数据库
- 用google代替CSDN的博客搜索功能
- 如何用JavaScript实现2+2=5?
- windows 10 开启全盘瞬间索引功能
- python中的画布背景设置_教你用python画图—Turtle详细教程
- 缓存与数据库一致性保证
- 【python问题系列--4】ValueError: operands could not be broadcast together with shapes (100,3) (3,1)...
- C++自定义函数类型——typedef的使用
- CSDN—编写博客(快捷键)
- 在现有计算机内安装另一个硬盘的原因,您有一台运行Windows7的计算机。您在计算机中安装第二个内部硬盘驱动器。您尝试创建一个系统映像,.. - 上学吧找答案...
- 用python实现计算器
- Ubuntu16.04 安装搭建RED5流媒体服务器
- python视频转图片
- AC自动机(Automaton)
- 计算机网络为什么要分层,从形而上到形而下视角的理解
- Wireshark抓取VLAN包
- 高中数学集合知识点小题解题方法
- mybatis一对多关系多表查询去重,不定条件查询,duplicated column id
- Python小技 不到100行代码制作各种证件照