fastdfs-javaapi连接池

fastdfs-javaapi连接池

ID:34416509

大小:41.29 KB

页数:10页

时间:2019-03-05

fastdfs-javaapi连接池_第1页
fastdfs-javaapi连接池_第2页
fastdfs-javaapi连接池_第3页
fastdfs-javaapi连接池_第4页
fastdfs-javaapi连接池_第5页
资源描述:

《fastdfs-javaapi连接池》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Fastdfs-javaapi-连接池1简绍大家都知道fastdfs分为trackerserver和storageserver,trackerserver是跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。storageserver是存储服务器,主要负责文件的存储。我们使用javaapi在分布式文件系统的文件去上传、修改、删除等操作时,有以下几步:1)申请与trackerserver的连接TrackerClienttrackerClient=newTrackerClient();TrackerSe

2、rvertrackerServer=trackerClient.getConnection();2)通过trackerServer得到与storageserver的连接的客户端StorageServerss=tc.getStoreStorage(ts);StorageClient1client1=newStorageClient1(trackerServer,ss);3)上传文件client1.upload_file1(fileBuff,fileExtName,null);4)关闭连接ss.close

3、();trackerServer.close();最终可以完成我们想要的操作,但是这两次创建的连接都是tcp/ip连接,如果每次创建完连接我们都再关闭连接。这个过程是很耗时的。通过api申请的连接并不支持高发发(即一个storage连接只能上传一个文件),我们必须保证同一时刻一个连接上传一个文件。由于我们用fastdfs做文件服务器,通过web的管理平台将文件上传至分布式文件系统中,每次申请完连接再关闭连接,对我们来说会延长上传文件的时间,而且上传文件高并发下,申请的连接可能突然增至几百个,这样我们的

4、服务器的性能损耗太大了。2javaapi源代码分析通过查看fastdfsjavaapi的源代码了解到。通过trackerServer和storageServer得到的newStorageClient1(trackerServer,storageServer);client对象,在操作文件时,会自动检查trackerServer和storageServer是否为空,如果为空,程序会自动为任一server创建连接,待操作完成后,将创建的连接关闭。如果storageServer为null,则程序自动创建tr

5、ackerServer,根据trackerServer得到storageServer,并返回storageServer,在返回storageServer之前会关闭trackerServer。通过storageServer上传完文件之后,关闭storageServer.如果都不空null,则api中不会关闭连接。3结合实际。由于我们搭建的文件系统架构是,一个tracker和三个storage.St1St1trackerSt1从这个图形可以看出,我们的tracker连接是没有必要改变的,申请一次就可以,(

6、直接点)故我们可以为tracker创建连接池。连接池代码如下ConnectionPool:importjava.io.IOException;importjava.net.InetSocketAddress;importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.TimeUnit;importorg.csource.fast

7、dfs.ClientGlobal;importorg.csource.fastdfs.StorageClient1;importorg.csource.fastdfs.StorageServer;importorg.csource.fastdfs.TrackerClient;importorg.csource.fastdfs.TrackerGroup;importorg.csource.fastdfs.TrackerServer;publicclassConnectionPool{//thelimit

8、ofconnectioninstanceprivateintsize=5;//busyconnectioninstancesprivateConcurrentHashMapbusyConnectionPool=null;//idleconnectioninstancesprivateArrayBlockingQueueidleConnectionPool=null;privat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。