- 论坛徽章:
- 0
|
本帖最后由 zhanghua1199 于 2012-12-25 12:11 编辑
fdfs--java--v1.0连接池.zip
(21.79 KB, 下载次数: 488)
这是以前的版本说明,可以参考一下。
因为业务场景web管理平台上传文件,但由于使用fastdfs java api得到的连接并不支持多线程,但也不能每次申请一个接连之后就关闭(浪费资源)。故需要一个连接池来提高操作文件效率
以下是我看fastdfs java api源代码的时候总结出来的一点小东东,能明白就明白,不明白也行(写的比较乱)。
使用storageClient上传文件时,如果storageServer为null,则程序自动
创建trackerServer,根据trackerServer得到storageServer,并返回storageServer
,在返回storageServer之前会关闭trackerServer。通过storageServer上传完文件
之后,关闭storageServer.
反之storageServer不为null则不会被关闭。
按这个逻辑,创建完storageClient,storageServer,则trackerServer就可以关闭了。
其实不然,这样得到的storageClient上传文件只会上传到storageServer所指向的主机,比方说,
现有a,b两台主机,程序获得的storageServer只指向a.以后使用storageclient上传的文件都会
上传到a的storage,并不会上传b的storage.这样导致不平衡
正常做法建议:trackerServer可以创建连接池,storageServer每次上传文件都重新创建一个。
目前发表这个是更新版,修改了几个bug,和增加了点功能。
1、本连接池是个人所写,公司内部在用()。
2、目前接口只提供了上传和删除操作,其它操作需要自己增加。
连接池代码更新版,新增以下参数
size--->连接池大小。默认2个
waitTimes --->等待超时,默认两秒,单位为秒
其它不变。一般构造形式如下:
只带域名
ImageServer ims=new ImageServerImpl("imageserver.com");
带有端口形式如下:
ImageServer ims=new ImageServerImpl("imageserver.com",22122);
带有连接池大小构造如下:
ImageServer ims=new ImageServerImpl("imageserver.com",22122,5);
设置等待超时:
ims.setWaitTimes( 5 ); //五秒
3、支持当管理平台的使用连接池与fdfs连接,当fdfs宕机,重启后,管理平台无需重启,连接自动建立。 |
|