什么是SeaweedFS?

  • SeaweedFS架构:

    • master service【主服务】和Volume service【卷服务】一起提供分布式对象存储服务,支持用户配置数据的复制和冗余策略。
    • 可选的Filer service【过滤器】和S3 service【S3服务】是对象存储之上的附加层,可以根据需要进行部署
    • 可选的Filer可以支持目录和POSIX属性。Filer是一个独立的线性可扩展的无状态服务器,具有可定制的元数据存储,例如MySql, Postgres, Redis, Cassandra, HBase, Mongodb, Elastic Search, LevelDB, RocksDB, Sqlite, MemSql, TiDB, Etcd, CockroachDB, YDB等。
    • 这些服务中的每一个都可以作为一个或单独的实例在各种实际服务器上运行。
  • SeaweedFS主要组件功能

    • master:负责管理所有的卷服务器(volume servers),分配文件ID,维护集群的元数据和状态。
    • volume:负责存储实际的文件内容,以及文件的大小,修改时间等属性。
    • filer:负责提供一个类似POSIX的文件层次结构,以及支持多种接口,如WebDAV,Hadoop等。
    • S3:负责提供一个兼容S3 API的网关,以及支持云端备份和分层存储等功能

在这里插入图片描述

与minio的区别

SeaweedFS和minio都是开源的分布式对象存储系统,它们都支持S3 API,并且可以用于存储和处理大量的数据。但是它们也有一些区别,主要有以下几点:

  • SeaweedFS使用了一个独特的文件ID机制,将文件元数据和文件内容分开存储,从而避免了元数据瓶颈,并且可以实现O(1)的磁盘寻址minio则使用了传统的文件名和目录结构来组织文件,但是也提供了一些高级功能,如加密,压缩,版本控制等。
  • SeaweedFS提供了一个filer组件,它可以在master和卷服务器之间提供一个类似POSIX的文件层次结构,以及支持WebDAV,Hadoop等多种接口。minio则主要依赖于S3 API来访问和管理文件,但是也提供了一些其他工具,如mc命令行客户端,minio console web界面等。
  • SeaweedFS支持云端备份和分层存储,可以将冷数据迁移到云端存储服务,如AWS S3,Google Cloud Storage等。minio则支持多云复制和联邦模式,可以将数据在不同的云端存储服务之间同步和迁移。
  • SeaweedFS支持纠删码(Erasure Coding),可以在卷级别提高数据的可靠性和容错性。minio则支持分布式纠删码(Distributed Erasure Coding),可以在集群级别提高数据的可靠性和容错性。
  • MinIO没有针对大量小文件进行优化。文件只是按原样存储在本地磁盘上。再加上用于擦除编码的额外元文件和碎片,它只会放大LOSF问题。
  • MinIO读取一个文件需要多次磁盘IO,而SeaweedFS是O(1),即使对于擦除编码的文件也是如此。
  • MinIO具有全时擦除编码。SeaweedFS在热数据上使用复制以获得更快的速度,并可选择在热数据上应用擦除编码。
  • MinIO没有类似posix的API支持。
  • MinIO对存储布局【存储布局】有特定的要求导致不能灵活调整,在SeaweedFS中,调整只需启动一个指向主卷的卷服务器即可。
  • MinIO的缺点:仅支持EC,会存在io放大的问题,特别是在大量小文件的场景下 - 扩容不太友好,对等扩容时需要全集群停止服务 - 支持的文件数量有限,基于本地文件系统设计,在对象数变多以后,inode的查找都会变得很耗时
  • SeaweedFS的缺点:S3的适配不完全: 实现了大部分的常用接口,部分非常用接口未实现,比如Canned ACL等

总的来说,SeaweedFS和minio都是优秀的分布式对象存储系统,它们各有各的优势和特点,选择哪一个取决于你的具体需求和场景。

参考

源码地址 seaweedfs
SeaweedFS 高可用方案最佳实践
SeaweedFS Download Binaries for different platforms
对象存储篇-SeaweedFS在同程旅行的使用实践

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐