免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6533 | 回复: 13
打印 上一主题 下一主题

[FastDFS] fastdfs java客户端重写分享 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-25 00:24 |只看该作者 |倒序浏览
基于java客户端1.24改写
主要目的:
1.代码整理的容易理解点,而且更适合spring使用,且放弃了静态类加载配置文件的方式
2.使用commoms-pool2做一个简单的socket连接池
改动及尚未完成的:
1.使用的接口做了一些调整,比如metadata现在不和文件一起上传,因为我看官方的包也是先上传文件在上传metadata,metadata上传不成功再删除上传的文件
2.取fileinfo的地方没有对文件名进行解析,直接请求了服务器,算是没写完整

代码地址svn://svn.code.sf.net/p/fastdfsclient/code
其中代码tags中1.24是我将官方代码改成了maven项目
trunk中的是我的代码,有一个简单的测试类作为demo

目前注释缺失比较多,希望大家能看看我的代码提点意见,如果觉得可以用的话随便使用

论坛徽章:
0
2 [报告]
发表于 2014-10-30 22:44 |只看该作者
你这个东西和原先的java客户端有啥区别呢?

论坛徽章:
0
3 [报告]
发表于 2014-10-31 21:09 |只看该作者
checkout出来看了下,使用上比原来余大写的那个方便多了
不过现在功能还不是很完善,最好多给几个Test Case
在TestCase上面写上注释,主要用于什么用途
还是很感谢楼主的分享和开创精神

论坛徽章:
0
4 [报告]
发表于 2014-10-31 21:10 |只看该作者
还有,现在托管的地址是sf的SVN,最好改成github.com托管
这个是比较正规的开源代码托管平台

论坛徽章:
0
5 [报告]
发表于 2014-10-31 21:12 |只看该作者
源代码的包名不要使用thrid.rewrite  使用一个正规一点的
比如com.github.工程名

论坛徽章:
0
6 [报告]
发表于 2014-11-01 21:41 |只看该作者
你写的这个客户端上传文件的时候必须要些groupname,可以不写吗?还有那个groupstate的获取是不是准确呢?

论坛徽章:
0
7 [报告]
发表于 2014-11-02 21:30 |只看该作者
回复 6# guopeihui


    groupname可以为null,此时就是系统分配,GroupState, StorageState这个应该是准确的
    其实所有的内容我都没有修改余大原有的逻辑,只是把代码结构按我使用的喜好调整了下

论坛徽章:
0
8 [报告]
发表于 2014-11-03 13:43 |只看该作者
其实这个我也看了,我问的意思是可以根据上传文件的大小选择group,前提是GroupState的获取准确回复 7# yuqih


   

论坛徽章:
0
9 [报告]
发表于 2014-11-03 22:23 |只看该作者
回复 8# guopeihui

个人觉得这种需求不应该由fastdfs的客户端来完成,同时注意groupState和storageState即使每次都向服务器请求拿到的也不是实时信息,好像我看文档,这些信息是storage节点定期向tracker节点推送信息的,默认的间隔大概是1分钟。

同时即使groupState是很准确的,如果每次上传都要去获取信息的话,是很影响上传的效率的。还有就是fastdfs的适应场景是<500M(其实一般就几十k到几十M)的小文件,而且这些文件一般不需要修改或追加,很少会出现依靠groupState来判断的情况,如果特大文件,建议使用hdfs等适合分布式计算的文件服务器。

至于你说的这种情况,我的做法是在应用中定期获取groupState,比如10分钟获取一次,如果groupState中的剩余容量小于某个值,则在可用列表中把这个group去掉。如果storage配置文件中的剩余容量设置的是30g,那么在groupstate中剩余容量在50g时就可以将这个节点从可用列表中移除了。


   

论坛徽章:
0
10 [报告]
发表于 2015-12-03 09:08 |只看该作者
回复 1# yuqih

NB,看着官方写的源码 完全是C语言的风格,我都快哭啦,自己重构了部分代码,除了核心代码,外围代码又重新封装了一下,另外我也是用commonPool做的连接池,只是批量上传图片经常出现各种问题,希望这个代码能够解决我的问题,还有那个对socket连接池的配置在哪
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP