利用seaweedfs支持多文件合并上传

利用seaweedfs支持多文件合并上传,第1张

        在日常文件处理这一块,我们经常会有大文件处理的需求,这个文件有可能有100M以上,甚至更高。针对这种情况,如果直接上传到seaweedfs上面,受制于网络,服务器情况,单个文件过大,稳定性就会卖绝大打折扣。在查看了seaweedfs之后, Large-File-Handling ( https://github.com/chrislusf/seaweedfs/wiki/Large-File-Handling ).仔细阅读之中扒姿后,大概意思就是。seaweedfs的高可用是建立在处理小文件的前提下,因为文件会加载到seaweedfs的内存之中。在文件拆分这一块,内置是提供了filer这个服务来处理,它会自动处理这个问题。以过分析,我果断放弃,就像我对DB的理解一样,把数据存储搞定就行了。中间件就专注做好本职内的事情。所以我转向了另外一种解决办法,改为由客户端自行处理。我们可以根据实际情况,调整单个此掘包的大小,最好控制在10M以内,当然做成可配置是更好。然后把每个文件的信息整理成一个json对象,并命名为Manifest,告诉seaweedfs,这个大文件是由1,2,3。。。。这几个文件合并而成。详情请参考 https://github.com/chrislusf/seaweedfs/blob/master/weed/operation/chunked_file.go#L24

因为是go写的,大家看着可能有点不太习惯。我整理了java的模板,如下:

文件明细:ChunkInfo

                 fid:产生的唯一文件编码(7,169aba906a)一定是带逗号,具体这个编码的规则,大家去查看我之前写的 https://www.jianshu.com/p/32239852d984 。访问文件地址,http://127.0.0.1:9081/7/169aba906a/test1.zip

                offset:文件读取的起始位置,如果是第一个文件就是0,如果是下一个文件,这个值就是上一个文件的结束位置

                 size:当前文件大小,以字节为单位

批量文件集合:ChunkManifest

                  name:新的文件名称

                  mine:文件类型,可以参考httpclient

                 size:合并之后的总文件大小,其实就是所有拆分文件的总合

                  chunks:上面ChunkInfo的集合

现在给一个实际的对象,大家看起来会更有感触:{

  "name" : "allin.zip",

  "mine" : "zip",

  "size" : 127646446,

  "chunks" : [ {

    "fid" : "7/169aba906a",

    "offset" : 0,

    "size" : 52428800

  }, {

    "fid" : "4/177d5cadcc",

    "offset" : 52428801,

    "size" : 52428800

  }, {

    "fid" : "3/18f0e181ff",

    "offset" : 104857601,

    "size" : 22788846

  } ]

}

这个对象整好之后,通过httpclient,走一般的seaweedfs文件上传流程,拿到ID,再把这个对象发送出去,成功之后就可以通过新的ID来访问这个合并之后的文件了。

>weed.exe master -ip=192.168.20.208 -port=9333

>weed.exe volume -dir="仔裂data"液激 -max=5 -mserver="闹戚袜192.168.20.208:9333" -port=8080 -ip=192.168.20.208

go看过几个程序,挺强大的。比如有一个weedfs分布式文件系统散坦。至于好用。脚本语言返搏是容易编程,容易维护,但是不容易调试。2000年左右python是脚本语言之王,现在也是排名靠前的。go是类似漏掘祥java设计定位,应用范围比java还要小的一个语言。可能需要很多年成长才会好用起来。要说好用呢,语言熟悉了,都好用。无论是basic,python,c,c++还是java,用熟悉了感觉是相同的,开发速度也比较接近。不过整体上脚本语言要比编译语言开发速度快几倍。但是运行时出错的几率也大了几倍。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12212530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存