seaweedfs学习

seaweedfs学习概述 seaweedfs 是一个分布式的文件系统 上面是官方 github 主页对其总的介绍 SeaweedFSisa SeaweedFSobj 1 diskseek transparentc andSeaweedFS

概述

seaweedfs是一个分布式的文件系统。

下面这段引用是官方github主页对其总的介绍

SeaweedFS is a simple and highly scalable distributed file system to store and serve billions of files fast! SeaweedFS object store has O(1) disk seek, transparent cloud integration, and SeaweedFS Filer supports Kubernetes, POSIX, S3 API, encryption, Erasure Coding for warm storage, FUSE mount, Hadoop, WebDAV.

seaweedfs支持集群模式,通过raft协议来保证数据的强一致性。

利用 docker启动一个seaweedfs集群

为了快速看到效果, 用docker在单机上启动一个集群看看

# pull weed镜像 docker pull chrislusf/seaweedfs:1.85 # 创建docker volume docker volume create weed-master docker volume create weed-volume1 docker volume create weed-volume2 # 启动master server, 两个volume server docker run -p 9333:9333 --name weed-master -v weed-master:/data -d chrislusf/seaweedfs:1.85 master docker run -p 8081:8080 --name weed-volume1 -v weed-volume1:/data \ --link weed-master:weed-master -d chrislusf/seaweedfs:1.85 \ volume -fileSizeLimitMB=128 -mserver="weed-master:9333" -port=8080 docker run -p 8082:8080 --name weed-volume2 -v weed-volume2:/data \ --link weed-master:weed-master -d chrislusf/seaweedfs:1.85 \ volume -fileSizeLimitMB=128 -mserver="weed-master:9333" -port=8080 

其中-fileSizeLimitMB=128选项指定了上传文件时最大不能超过128M

http接口使用

为了方便演示, 建立了两个文件,大小分别为12字节和129M

root@gl-test: ~ # ls -l [13:44:16] total 6148 -rw-r--r-- 1 root root 12 Jul 18 13:40 a.txt -rw-r--r-- 1 root root  Jul 18 13:43 largefile 
  • 直接上传
    root@gl-test: ~ # curl -F file=@./a.txt http://localhost:9333/submit { 
         "eTag":"28b81996","fid":"5,09dff3964d","fileName":"a.txt","fileUrl":"172.17.0.3:8080/5,09dff3964d","size":12}# 
  • 先分配fileId再上传
    root@gl-test: ~ # curl http://localhost:9333/dir/assign { 
         "fid":"7,0b93c620ad","url":"172.17.0.4:8080","publicUrl":"172.17.0.4:8080","count":1}#  # 直接用上面返回的url来作为上传地址  root@gl-test: ~ # curl -F file=@./a.txt http://172.17.0.4:8080/7,0b93c620ad  { 
         "name":"a.txt","size":12,"eTag":"f0ff7292","mime":"text/plain"}#  
  • 查找
    root@gl-test: ~ # curl http://localhost:9333/dir/lookup\?fileId\=7,0b93c620ad { 
         "volumeId":"7","locations":[{ 
         "url":"172.17.0.4:8080","publicUrl":"172.17.0.4:8080"}]}#  

    可以找出某个fileId对应的文件在哪个volume server上(返回的url, publicUrl根据情况使用)

  • 下载
    root@gl-test: ~ # curl -i http://172.17.0.4:8080/7,0b93c620ad [13:56:27] HTTP/1.1 200 OK Accept-Ranges: bytes Content-Disposition: inline; filename="a.txt" Content-Length: 12 Content-Type: text/plain Etag: "f0ff7292" Last-Modified: Sat, 18 Jul 2020 05:48:04 GMT Date: Sat, 18 Jul 2020 05:56:30 GMT hello world 

    注意:

    • 下载地址可通过lookup的url 或者 publicUrl来指定
    • 返回的Header中有Content-Disposition: inline; filename="a.txt"; inline是说尽可能直接显示
      比如这个请求,在浏览器中的话会直接显示文件内容。
      如果无法直接显示(比如zip文件), 才会下载, 参考https://stackoverflow.com/questions//content-dispositionwhat-are-the-differences-between-inline-and-attachment。




总结

参考

  • https://stackoverflow.com/questions//content-dispositionwhat-are-the-differences-between-inline-and-attachment
  • https://github.com/chrislusf/seaweedfs/wiki

(完)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221004.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:09
下一篇 2026年3月17日 下午7:09


相关推荐

  • armv6、armv7、armv7s、arm64 与开发静态库(.a)

    armv6、armv7、armv7s、arm64 与开发静态库(.a)声明:本帖系列均为在转载和摘抄的基础上进行补充。若转载请备注原文出处。/** 第一部分 初步认识*/ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,它的性能在同等功耗产品中也很出色,几乎所有手机都是使用它的。Armv6、armv7、armv7s、arm64都是arm处理器的指令集,所有指令集原则上都是向下兼容

    2022年6月29日
    65
  • celery启动命令_不root卸载系统软件

    celery启动命令_不root卸载系统软件这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Ma…

    2022年8月10日
    60
  • rebar3使用介绍(二)配置项

    rebar3使用介绍(二)配置项rebar3 使用介绍 二 全局配置 Alias 别名 ArtifactsCom 测试选项 CoverDialyze 目录 EDocEscriptE 最小 OTP 版本检查 OverridesHoo 钩子 shell 钩子功能钩子自写功能中可以 hook 的点 RELXSHELLXRe 本篇主要介绍 rebar3 的配置部分全局配置 rebar3 支持全局

    2026年3月19日
    3
  • JavaScript之继承

    JavaScript之继承

    2020年11月19日
    175
  • ctags使用方法

    ctags使用方法

    2021年8月24日
    71
  • COM编程之三 QueryInterface

    COM编程之三 QueryInterface【1】IUnknown接口客户同组件交互都是通过接口完成的。在客户查询组件的其它接口时,也是通过接口完成的。而那个接口就是IUnknown。IUnknown接口的定义包含在Win32SDK中的U

    2022年7月4日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号