seaweedfs 性能,Seaweedfs

  seaweedfs 性能,Seaweedfs

  最近在工作中接触到了seaweedfs,因为需要用到。所以准备好仔细探索吧。

  首先,我们来分析一下什么是seaweedfs。Seaweedfs是golang开发的一个优秀的分布式存储开源项目。它是一个存储文件的系统,与使用的语言无关,这使得在云端存储文件非常方便。Seaweedfs也是一个优秀的开源项目。Seaweedfs的设计原理是基于脸书图片存储系统的论文《脸书-干草堆》。感觉作者第一眼就NB了。有兴趣可以看看seaweedfs的源代码。本文将解释Seaweedfs的构造和简单应用。

  海草的特点:

  10%可以存储上亿个文件(取决于你硬盘的大小)

  2速度刚刚好

  接下来,我们开始进入正文。

  一、构建seaweedfs seaweedfs可以编译安装(需要VPN,网络环境不好,最好不要用这种方式安装),也可以下载发布版本进行镜像安装。1.安装go环境(1)并下载GO语言包。go语言包的地址是wget,例如:

  wget https://golangtc . com/static/go/1 . 9 . 2/go 1 . 9 . 2 . Linux-amd64 . tar . gz(2),解压到指定目录,添加环境变量sudotar-c/usr/local-xzf go1.9.2.linux-amd64.tar.gz添加环境变量。

  #工作目录导出GOPATH=/opt/go#解压缩目录exportgoroot=/usr/local/goexportgorch=386 exportgoos=Linux exportgobin=$ go root/binexportgotools=$ go root/pkg/tool/Export path=$ path:$ gobin:$ go tools(3)、install git、mercurial sudo apt-get install gitsuo od apt-get install mercurial(4)、install seaweedfs。如果您想在没有VPN的情况下编译、安装和运行以下命令,您可以忽略以下命令:

  获取github.com/chrislusf/seaweedfs/go/weed下载和安装:seaweedfs地址

  wget https://github . com/Chris lusf/seaweedfs/releases/download/0.76/Linux _ amd64 . tar . gzsudotar-zxvf Linux _ amd64.tar.gz(5),配置运行seaweedfs进入解压后的目录,启动seaweedfs的主服务和集群作为守护进程(启动前创建相应的目录,/data/fileData,/data/t_v1,/data/t_v2,/data/t_v3)。

  Sudnohup。/weed master-mdir=/Data/file Data-port=9333-default replication= 001 -IP= IP address /Data/file Data/server _ SFS . logsudo ./weed volume-dir=/Data/T _ v1-max=5-m server= IP address:9333 -port=9080-IP= IP address /Data/T _ v1 _ SFS . logsudo ./weed volume-dir=/Data/T _ v2-max=5-m server=.可以根据自己的情况加多少量。Mdir和dir是指定的文件存储路径。

  一个MasterServer对应三个VolumeServer,复制模式设置为“001”,即同一机架下一个副本,即总共有两个副本。如下所示:

  更多其他配置可在文档中查看。

  二。seaweedfs的文件应用程序访问服务器的ip地址:9333。您可以看到以下界面

  (1)获取fid,使用GET或POST访问路径http://localhost:9333/dir/assign,获取fid并上传文件地址,seaweedfs将返回json的结果。如下所示:

  curl-x post http://localhost:9333/dir/assign获取结果:

  {FID: 1,08E684F060 , URL : 1 localhost:9080 , public URL: localhost: 9080 , count: 1} FID是上传的标志。

  使用url或publicUrl加fid,这是上传文件的地址。如下所示:

  3358 localhost: 9080/1,08E684F060然后可以向上述地址发起一个PUT或POST请求,并上传文件。

  curl-x put-f file=@/home/back . png http://localhost:9080/1,08E684F060结果如下:

  {name: back.png , size: 64300} (2)如果你想更新一个文件,直接向url fid地址发送POST或PUT请求即可。Fid是用来保存图片的fid。

  (3)删除图片,发起删除请求。

  curl-x Delete http://localhost:8080/1,08E684F060 (4)查看文件需要fid。是fid刚刚上传的照片。你可以把它保存在数据库中,当你寻找一个文件时调用它。

  当有多个卷簇时,可以通过指定参数来查看卷。

  curl本地主机:9333/dir/lookup?VolumeId=2以获取具体地址:

  {VolumeID: 2 , Locations :[{ URL : localhost:9081 , public URL: localhost: 9081}]}然后访问特定的路由:

  3358 localhost: 9081/FID例如:3358 localhost: 9081/1,08E684F060

  带或不带后缀。

  http://localhost:9081/1,08e684f060.jpg

  您也可以采用一些限定参数:

  http://localhost:9081/1,08e684f060.jpg

  http://localhost:9081/1,08e684f060.jpg?高度=200宽度=200

  http://localhost:9081/1,08e684f060.jpg?高度=200宽度=200模式=适合

  http://localhost:9081/1,08e684f060.jpg?高度=200宽度=200模式=填充

  其实刚刚上传的卷1在9080,卷2在9081。不过图片的地址还是可以通过fid加比容端口访问的。

  3.seaweedfs客户端使用seaweedfs。SeaweedFS的使用与语言无关,可以方便地打包。github上也有一些开放客户端。比如这个java客户端。作者的线程分配,HTTP请求,文件操作都封装了,比较方便。但是目前作者更新的不多,还是有一些问题。

  我重写了客户端的java代码,上传到github。seaweedfs-java-client欢迎您开始。

  以下是一些其他语言的客户端,你可以学习更改它们:

  java客户端:https://github.com/Shuyun123/seaweedfs-java-client

  php客户端:https://github.com/micjohnson/weed-php

  节点-客户端:https://github.com/cruzrr/node-weedfs

  python客户端:https://github.com/darkdarkfruit/python-weed

  scala客户端:https://github.com/chiradip/WeedFsScalaClient

  四。扩展除了seaweedfs,还有一些其他的文件存储,比如:bfs(支持哔哩哔哩的小型文件存储系统),github地址bfs。有兴趣的读者可以研究一下。

  比如阿里的https://github.com/alibaba/tfs,百度的https://github.com/baidu/bfs, FastDFS:https://github.com/happyfish100/fastdfs等等。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: