wfs 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
wfs 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
wfs 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD-3-Clause license
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 服务器软件存储系统
开源组织
地区 国产
投 递 者 donnie4w
适用人群 未知
收录时间 2017-04-05

软件简介

WFS文件存储系统,主要解决海量小文件的存储问题

wfs有非常高效的读写效率,在高并发压力下,wfs存储引擎读写响应时间可以达到微秒级别.

海量小文件可能带来的许多问题:

    海量小文件存储在不同的硬件环境和系统架构下,都会带来一系列显著的问题。无论是采用传统的机械硬盘(HDD)还是现代的固态硬盘(SSD),这些问题都可能影响系统的性能、效率、扩展性和成本:

  1. 存储效率低下:对于任何类型的硬盘,小文件通常会导致物理存储空间的低效使用。由于硬盘有其最小存储单元(扇区或页),小文件可能会占用超过其实际内容大小的空间,尤其是在每个文件还需额外存储元数据的情况下,如inode(在Unix-like系统中)或其他形式的元数据记录,这会进一步加大空间浪费。inode耗尽:每个文件和目录至少占用一个inode,而inode的数量是在格式化磁盘并创建文件系统时预先设定的。当系统中有大量小文件时,即使硬盘空间还很充足,也可能因为inode用完而导致无法继续创建新文件,尽管剩余磁盘空间足以存放更多数据。性能影响:随着inode数量增多,查找和管理这些inode所对应的元数据会变得更复杂和耗时,尤其是对于不支持高效索引机制的传统文件系统,这会影响文件系统的整体性能。扩展性受限:文件系统设计时通常有一个固定的inode总数,除非通过特殊手段(如调整文件系统或重新格式化时指定更多inode),否则无法动态增加inode数量来适应小文件增长的需求。
  2. I/O性能瓶颈与资源消耗:在HDD环境中,随机读写大量小文件会引发频繁的磁盘寻道操作,从而降低整体I/O性能。而在SSD中,尽管寻道时间几乎可以忽略,但过于密集的小文件访问仍可能导致控制器压力增大、写入放大效应以及垃圾回收机制负担加重。
  3. 索引与查询效率问题:海量小文件对文件系统的索引结构形成挑战,随着文件数量的增长,查找、更新和删除小文件时所需的元数据操作会变得非常耗时。尤其在需要快速检索和分析场景下,传统索引方法难以提供高效的查询服务。
  4. 备份恢复复杂性与效率:备份海量小文件是一个繁琐且耗时的过程,同时在恢复过程中,尤其是按需恢复单个文件时,需要从大量备份数据中定位目标文件,这将极大地影响恢复速度和效率。
  5. 扩展性与可用性挑战:存储系统在处理海量小文件时,可能面临扩展性难题。随着文件数量的增长,如何有效分配和管理资源以维持良好的性能和稳定性是一大考验。在分布式存储系统中,还可能出现热点问题,导致部分节点负载过高,影响整个系统的稳定性和可用性。

   wfs 作用在于将海量提交存储的小文件进行高效的压缩归档。并提供简洁的数据获取方式,以及后台文件管理,文件碎片整理等。


wfs相关程序


wfs的特点

  • 高效性
  • 简易性
  • 零依赖
  • 管理平台
  • 图片处理

应用场景

  • 媒体存储:适用于存储和访问海量的小文件,如图片、文本等。凭借高性能存储引擎,WFS 可实现高速存取,并提供丰富的图片资源处理功能。

技术特点

  • 高吞吐量低延迟:保证在高并发场景下的数据存取速度。
  • 支持多级别数据压缩存储:节省存储空间,提高存储效率。
  • 支持http(https)协议存取文件
  • 支持thrift协议长连接存取文件
  • 支持图片基本处理:内置图片处理功能,满足多媒体存储需求。

WFS的压力测试与性能评估

请注意,以下基准测试数据主要针对WFS数据存储引擎,未考虑网络因素的影响。在理想条件下,基于基准测试数据得出估算数据

以下为部分压测数据截图

测试数据说明:

  • 第一列为测试方法,写Append, 读Get , *-4四核,*-8八核
  • 第二列为本轮测试执行总次
  • ns/op: 每执行一次消耗的时间
  • B/op:每执行一次消耗的内存
  • allocs/op:每执行一次分配内存次数

 

根据基准测试数据,可以估算出wfs存储引擎的性能

  • 存储数据性能估算
  1. Benchmark_Append-4 平均每秒执行的操作次数约为:1 / (36489 ns/operation) ≈ 27405次/s
  2. Benchmark_Append-8 平均每秒执行的操作次数约为:1 / (31303 ns/operation) ≈ 31945次/s
  3. Benchmark_Append-4 平均每秒执行的操作次数约为:1 / (29300 ns/operation) ≈ 34129次/s
  4. Benchmark_Append-8 平均每秒执行的操作次数约为:1 / (24042 ns/operation) ≈ 41593次/s
  5. Benchmark_Append-4 平均每秒执行的操作次数约为:1 / (30784 ns/operation) ≈ 32484次/s
  6. Benchmark_Append-8 平均每秒执行的操作次数约为:1 / (30966 ns/operation) ≈ 32293次/s
  7. Benchmark_Append-4 平均每秒执行的操作次数约为:1 / (35859 ns/operation) ≈ 27920次/s
  8. Benchmark_Append-8 平均每秒执行的操作次数约为:1 / (33821 ns/operation) ≈ 29550次/s
  • 获取数据性能估算
  1. Benchmark_Get-4 平均每秒执行的操作次数约为:1 / (921 ns/operation) ≈  1085776次/s
  2. Benchmark_Get-8 平均每秒执行的操作次数约为:1 / (636 ns/operation) ≈  1572327次/s
  3. Benchmark_Get-4 平均每秒执行的操作次数约为:1 / (1558 ns/operation) ≈ 641848次/s
  4. Benchmark_Get-8 平均每秒执行的操作次数约为:1 / (1296 ns/operation) ≈ 771604次/s
  5. Benchmark_Get-4 平均每秒执行的操作次数约为:1 / (1695 ns/operation) ≈ 589970次/s
  6. Benchmark_Get-8 平均每秒执行的操作次数约为:1 / (1402ns/operation) ≈  713266次/s
  7. Benchmark_Get-4 平均每秒执行的操作次数约为:1 / (1865 ns/operation) ≈ 536000次/s
  8. Benchmark_Get-8 平均每秒执行的操作次数约为:1 / (1730 ns/operation) ≈ 578034次/s

 

写入数据性能

  • 在不同并发条件下,WFS存储引擎的写入操作平均每秒执行次数介于约 3万次/s 至 4万次/s 之间。

读取数据性能

  • WFS存储引擎读数据操作的性能更为出色,平均每秒执行次数在 53万次/s 至 150万次/s 之间。

 

   请注意:测试结果与环境有很大关系。实际应用中的性能可能会受到多种因素的影响,如系统负载、网络状况、磁盘I/O性能等,实际部署时需要根据具体环境进行验证和调优。


wfs内置图片基础处理

原图:   https://tlnet.top/statics/test/wfs_test.jpg

 

 

 

 

 

 

 

 

 

 

图片处理方式见 wfs使用文档


WFS的使用简单说明

  1. 执行文件下载地址:https://tlnet.top/download
  2. 启动:

        ./linux101_wfs     -c    wfs.json

3.   wfs.json 配置说明

{
    "listen": 4660,     
    "opaddr": ":6802",
    "webaddr": ":6801",
    "memLimit": 128,
    "data.maxsize": 10000,
    "filesize": 100,
}

属性说明:

  • listen                  http/https 资源获取服务监听端口
  • opaddr               thrift后端资源操作地址
  • webaddr            管理后台服务地址
  • memLimit          wfs内存最大分配 (单位:MB)
  • data.maxsize      wfs上传图片大小上限 (单位:KB)
  • filesize                wfs后端归档文件大小上限 (单位:MB)

wfs使用详细说明请参考 wfs使用文档

 


WFS如何存储,删除数据

1. http/https

curl -F "file=@1.jpg"  "http://127.0.0.1:6801/append/test/1.jpg" -H "username:admin" -H "password:123"

curl -X DELETE "http://127.0.0.1:6801/delete/test/1.jpg" -H "username:admin" -H "password:123"

2. 使用客户端

    以下是java客户端 示例

    public void append() throws WfsException, IOException {
        String dir = System.getProperty("user.dir") + "/src/test/java/io/github/donnie4w/wfs/test/";
        WfsClient wc = newClient();
        WfsFile wf = new WfsFile();
        wf.setName("test/java/1.jpeg");
        wf.setData(Files.readAllBytes(Paths.get(dir + "1.jpeg")));
        wc.append(wf);
    }

3. 通过管理后台上传/删除文件

 


WFS管理后台

默认搜索

 

前缀搜索

 

碎片整理

 

 

展开阅读全文

代码

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
05/10 11:42

wfs 文件存储系统 v1.0.6 发布

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等。 WFS官网 在线测试(用户名admin 密码123) WFS使用文档 WFS文件存储系统 V1.0.6 主要更新 优化并修复部分bug 增加rust客户端 wfs-rsclient 完善wfs使用文档 更新docker镜像: docker pull donnie4w/wfs wfs-rsc...

1
4
发表了资讯
04/22 10:30

wfs 文件存储系统 v1.0.5 发布

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等。 WFS官网 在线测试(用户名admin 密码123) WFS使用文档 海量小文件问题(LOSF)是一个在大规模数据存储与管理中广泛存在的挑战,尤其是在互联网、物联网、云计算、大数据等领域的应用场景中尤为突出: 系统调用开...

5
3
发表了资讯
03/28 10:15

WFS 文件存储系统 v1.0.4 发布

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等。 WFS官网 在线测试(用户名admin 密码123) WFS使用文档 WFS文件存储系统 V1.0.4 主要更新 限流支持 优化读写效率策略。 修复部分bug。 增加 content-type设置 docker镜像 说明 wfs 读写效率非常高,支持并发读写...

3
2
发表了资讯
03/21 10:36

wfs 海量小文件存储系统 v1.0.3

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等。 WFS官网 在线测试(用户名 admin 密码 123) WFS文件存储系统 V1.0.3 主要更新 支持增量导出元数据 支持增量导出原始数据 支持多种文件数据指纹算法 说明:导出导入 元数据与原始数据,请参考 《wfs使用文档》 ...

2
5
发表了资讯
03/14 09:57

wfs 海量小文件存储系统 v1.0.2 发布

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等。 wfs官网 在线测试(用户名admin 密码123) wfs文件存储系统 V1.0.2 主要更新 新增支持对路径重命名,而不是只能通过重新上传文件来修改 新增支持导出元数据进行数据备份 新增导入元数据进行数据恢复 说明:数据...

2
10
发表了资讯
03/07 11:57

WFS 文件存储系统 v1.0.1 发布

WFS文件存储系统,主要解决海量小文件的存储问题 wfs有非常高效的读写效率,在高并发压力下,wfs存储引擎读写响应时间可以达到微秒级别. 海量小文件可能带来的许多问题: 海量小文件存储在不同的硬件环境和系统架构下,都会带来一系列显著的问题。无论是采用传统的机械硬盘(HDD)还是现代的固态硬盘(SSD),这些问题都可能影响系统的性能、效率、扩展性和成本: 存储效率低下:对于任何类型的硬盘,小文件通常会导致物理存储空...

3
11
发表了资讯
2017/04/24 13:22

wfs 文件存储系统 0.0.2 版本发布

wfs分布式文件存储系统 版本0.0.2 wfs提供了分片支持,分片可以解决单个节点的资源限制问题 wfs -slavelist 查询目前的节点 wfs -addslave slave1:192.168.1.101:3434 增加分片 节点名slave1,地址:192.168.1.101:3434 wfs -addslave slave2:192.168.1.102:3435 增加分片 节点名slave2,地址:192.168.1.102:3435 wfs -removeslave slave1 删除分片slave1 每个wfs节点都可以单独提供服务,数据备份只需要rsync wfs下的data文...

5
27
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
39 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部