fastdfs分散式檔案系統之TrackerServer連線池實現
非常感謝 http://blog.csdn.net/Mr_Smile2014/article/details/52441824
公司使用fastdfs檔案系統來儲存檔案和圖片,為了避免每個系統都直接通過客戶端直接訪問fastdfs檔案系統,所以我們做了一個
dubbo服務。要實現圖片上傳、下載的服務或工程直接呼叫dubbo介面就可以了。為了提高效能對fastdfs檔案系統TrackerServer寫了個
連線池,同時寫了空閒連線是否可用的監測類。
下面對連線池的具體實現作介紹。
連線池類
實現配置檔案的讀取、初始化各項引數、建立預設的TrackerServer數、空閒連接獲取、釋放繁忙連線及刪除不可用的連線;
- package com.xxxx.fastdfs.pool;
- import java.io.IOException;
- import java.util.UUID;
- import java.util.concurrent.LinkedBlockingQueue;
- import java.util.concurrent.TimeUnit;
- import org.csource.fastdfs.ClientGlobal;
- import org.csource.fastdfs.TrackerClient;
- import org.csource.fastdfs.TrackerServer;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.xxxx.common.AppException;
- import com.xxxx.fastdfs.exception.ERRORS;
- /**
- *
- * @ClassName: ConnectionPool
- * @Description: fastdfs連線池
- * @author mr_smile2014 [email protected]
- * @date 2015年10月26日 下午3:36:02
- *
- */
- publicclass ConnectionPool {
- privatestaticfinal Logger LOGGER = LoggerFactory
- .getLogger(ConnectionPool.class);
- /** 空閒的連線池 */
- private LinkedBlockingQueue<TrackerServer> idleConnectionPool = null;
- /** 連線池預設最小連線數 */
- privatelong minPoolSize = 10;
- /** 連線池預設最大連線數 */
- privatelong maxPoolSize = 30;
- /** 當前建立的連線數 */
- privatevolatilelong nowPoolSize = 0;
- /** 預設等待時間(單位:秒) */
- privatelong waitTimes = 200;
- /** fastdfs客戶端建立連線預設1次 */
- privatestaticfinalint COUNT = 1;
- /**
- * 預設構造方法
- */
- public ConnectionPool(long minPoolSize, long maxPoolSize, long waitTimes) {
- String logId = UUID.randomUUID().toString();
- LOGGER.info("[執行緒池構造方法(ConnectionPool)][" + logId
- + "][預設引數:minPoolSize=" + minPoolSize + ",maxPoolSize="
- + maxPoolSize + ",waitTimes=" + waitTimes + "]");
- this.minPoolSize = minPoolSize;
- this.maxPoolSize = maxPoolSize;
- this.waitTimes = waitTimes;
- /** 初始化連線池 */
- poolInit(logId);
- /** 註冊心跳 */
- HeartBeat beat = new HeartBeat(this);
- beat.beat();
- }
- /**
- *
- * @Description: 連線池初始化 (在載入當前ConnectionPool時執行) 1).載入配置檔案 2).空閒連線池初始化;
- * 3).建立最小連線數的連線,並放入到空閒連線池;
- *
- */
- privatevoid poolInit(String logId) {
- try {
- /** 載入配置檔案 */
- initClientGlobal();
- /** 初始化空閒連線池 */
- idleConnectionPool = new LinkedBlockingQueue<TrackerServer>();
- /** 往執行緒池中新增預設大小的執行緒 */
- for (int i = 0; i < minPoolSize; i++) {
- createTrackerServer(logId, COUNT);
- }
- } catch (Exception e) {
- LOGGER.error("[FASTDFS初始化(init)--異常][" + logId + "][異常:{}]", e);
- }
- }
- /**
- *
- * @Description: 建立TrackerServer,並放入空閒連線池
- *
- */
- publicvoid createTrackerServer(String logId, int flag) {
- LOGGER.info("[建立TrackerServer(createTrackerServer)][" + logId + "]");
- TrackerServer trackerServer = null;
- try {
- TrackerClient trackerClient = new TrackerClient();
- trackerServer = trackerClient.getConnection();
- while (trackerServer == null && flag < 5) {
- LOGGER.info("[建立TrackerServer(createTrackerServer)][" + logId
- + "][第" + flag + "次重建]");
- flag++;
- initClientGlobal();
- trackerServer = trackerClient.getConnection();
- }
- org.csource.fastdfs.ProtoCommon.activeTest(trackerServer
- .getSocket());
- idleConnectionPool.add(trackerServer);
- /** 同一時間只允許一個執行緒對nowPoolSize操作 **/
- synchronized (this) {
- nowPoolSize++;
- }
相關推薦
fastdfs分散式檔案系統之TrackerServer連線池實現
非常感謝 http://blog.csdn.net/Mr_Smile2014/article/details/52441824 公司使用fastdfs檔案系統來儲存檔案和圖片,為了避免每個系統都直接通過客戶端直接訪問fastdfs檔案系統,所以我們做了一個
【FastDFS分散式檔案系統之二】:FastDFS小檔案上傳效能測試及Python客戶端上傳操作
由於要對比swift上傳小檔案以及fdfs上傳小檔案的效能,故做效能測試。 1.1 測試環境: FastDFS叢集的搭建方法:【FastDFS分散式檔案系統之一】:搭建、部署、配置 tracker server1:node2 tracker server2:node3
Fastdfs分散式檔案系統之檔案同步機制
原連結 http://blog.csdn.net/mr_smile2014/article/details/52118541 FastDFS同步相關檔案: a)10.100.66.82_23000.mark 內容如下: binlog_index=0 binlog
【Fastdfs】Fastdfs分散式檔案系統的安裝部署使用,以及fastdfs連線池connectionpool編寫使用
環境:centos 7.X 預編譯安裝元件 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y 以上安裝完,後續的各
【Fastdfs】Fastdfs分散式檔案系統的安裝部署使用,結合nginx訪問圖片,fastdfs連線池connectionpool編寫使用,文末有github連結
環境:centos 7.X 預編譯安裝元件 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y 以上安裝
分散式檔案系統之-FastDFS
FastDFS分佈檔案系統介紹: 1.FastDFS是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務,如相簿網
分散式檔案系統之FastDFS安裝部署
前面我們瞭解了分散式檔案系統mogilefs的框架以及安裝部署和簡單使用,回顧請參考https://www.cnblogs.com/qiuhom-1874/tag/MogileFS/;今天我們來了解下FastDFS叢集的安裝部署; FastDFS是由國人研發的一個輕量級分散式檔案系統,主要由track
分散式檔案系統之 FastDFS
### [FastDFS 百度百科](https://baike.baidu.com/item/fastdfs/5609710?fr=aladdin) > `FastDFS` 是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容
FastDFS分散式檔案系統配置與部署
一文搞定FastDFS分散式檔案系統配置與部署 閱讀目錄 1 分散式檔案系統介紹 2 系統架構介紹 3 FastDFS效能方案 4 Linux基本命令操作 5 安裝VirtualBox虛擬機器並配置Ubuntu
FastDFS分散式檔案系統 -- 工作原理
FastDFS介紹 FastDFS分散式檔案管理系統,是用 c 語言編寫的一款開源的分散式檔案系統。FastDFS 為網際網路量身定製, 充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS 很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、
上傳圖片至fastdfs分散式檔案系統並回顯
事件,當我們瀏覽完圖片選中一張時,觸發onchange事件將圖片上傳到伺服器並回顯、 1 <img width="100" height="100" id="allUrl" src="${brand.imgUrl }"/> 2 <input type="hidden" name
第五十二章:FastDFS分散式檔案系統
資料下載 大綱 FastDFS架構包括Tracker server 和 Storage server 。客戶端請求Tracker server 進行檔案上傳、下載,通過Ttacker server 排程,最總
分散式檔案系統之GPFS
GPFS是IBM公司通過完善和發展其Tiger Shark檔案系統發展而來。GPFS通過共享磁碟結構來實現其強大的擴充套件性。一個GPFS系統由許多叢集節點組成,GPFS檔案系統和應用程式在上面執行。這些節點通過互動網路架構(Switch Fabric)網路連線磁碟
Dubbo+Zookeeper架構—高階篇20-fastdfs分散式檔案系統的安裝
目錄 FastDFS簡介 系統架構 系統架構-下載檔案流程圖 相關術語 同步機制 •同一組內的storage server之間是對等的,檔案上傳、刪除等操作可以在任意一臺storage server上進行; 安裝 環境資訊 一、所有跟蹤伺服器和儲存伺服器均執行如下
找到一個適合的分散式檔案系統之各種分散式檔案系統優缺點對比
一、各種分散式檔案系統對比 1.1 表格對比 技術 優點 缺點 總結 1、 HDFS 1、大資料批量讀寫,吞吐量高; 2、一次寫入,多次讀取
【 專欄 】- 實戰FastDFS分散式檔案系統
實戰FastDFS分散式檔案系統 大型網際網路應用高速增長,導致傳統的檔案系統無法滿足效能要求,隨之應運而生的是分散式檔案系統。FastDFS是一款輕量級、高可靠性、具有資料備份功能、適用於小型檔案應用場景的分散式檔案系統。
一文搞定FastDFS分散式檔案系統配置與部署
相關文章 1 分散式檔案系統介紹 分散式檔案系統:Distributed file system, DFS,又叫做網路檔案系統:Network File System。一種允許檔案通過網路在多臺主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。 特點:在一個分享的磁碟檔案系統中
FastDFS分散式檔案系統在Linux上的部署和安裝
最近空閒之餘,對分散式檔案系統感興趣就研究研究。 首先要知道FastDFS的定義:FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭
FastDFS分散式檔案系統安裝與使用(單節點)
FastDFS是由淘寶的餘慶先生所開發,是一個輕量級、高效能的開源分散式檔案系統,用純C語言開發,包括檔案儲存、檔案同步、檔案訪問(上傳、下載)、存取負載均衡、線上擴容、相同內容只儲存一份等功能,適合有大容量儲存需求的應用或系統。做分散式系統開發時,其中要解
Java利用fastdfs-client-java開發工具包操作FastDFS分散式檔案系統
org.csource.common.MyException: getStoreStorage fail, errno code: 2 at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1