日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java分布式篇5——FastDFS

發布時間:2025/3/12 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java分布式篇5——FastDFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java分布式篇5——FastDFS

分布式文件系統

1、主流的分布式文件系統

1.1、 HDFS

(Hadoop Distributed File System)Hadoop 分布式文件系統

  • 高容錯的系統,適合部署到廉價的機器上
  • 能提供高吞吐量的數據訪問,非常適合大規模數據應用
  • HDFS采用主從結構,一個HDFS是由一個name節點和N個data節點組成
  • name節點儲存元數據,一個文件分割成N份存儲在不同的data節點上
  • 生態好

1.2、GFS

Google File System

  • 可擴展的分布式文件系統,用于大型的,分布式的,對大量數據進行訪問的應用
  • 運行于廉價的普通硬件上,可以提供容錯功能
  • 它可以給大量的用戶提供總體性能較高的服務
  • GFS采用主從結構,一個GFS集群由一個master和大量的chunkserver(分塊服務器)組成
  • 一個文件被分割若干塊,分散儲存到多個分塊server中

1.3、FastDFS

  • fastDFS特別適合圖 片,小視頻等小文件,因為fastDFS對文件是不分割的,所以沒有文件合并的開銷
  • 網絡通信用socket,速度快

2、工作原理

  • Tracker(追蹤者):負載均衡和調度,它管理著存儲服務(Storage Server),可以集群,實現高可用
  • Storage(倉庫):文件存儲的位置
    • storage集群采用分組的方式,同組內的每臺服務器是平等關系,數據同步,目的是實現數據備份,從而高可用,而不同組的服務器之間是不通信的
    • 同組內的每臺服務器的存儲量不一致的情況下,會選取容量最小的那個,所以同組內的服務器之間軟硬件最好保持一致
    • Storage Server會連接集群中的所有Tracker Server,定時向他們匯報自己的狀態,例如:剩余空間,文件同步情況,文件上傳下載次數等信息

3、上傳下載原理

3.1、上傳

3.2、下載

4、FastDFS安裝

libfastcommon 百度云:https://pan.baidu.com/s/1js5_xYNU_d1wV29BF1GQIg提取碼:4q2m

FastDFS_v5.05 百度云:https://pan.baidu.com/s/11hBxbbxy6cneRYTLjOgXYg提取碼:2rxp

4.1、安裝gcc環境

yum install -y gcc gcc-c++

4.2、安裝libevent

yum -y install libevent

4.3、安裝libfastcommon

#安裝解壓zip包工具 yum install -y unzip #解壓zip unzip libfastcommon.zip #進入目錄 cd libfastcommon-master #編譯 ./make.sh #如果出現權限不允許 chmod 777 make.sh ./make.sh #安裝 ./make.sh install

4.4、安裝Tracker

#解壓 tar -zxvf FastDFS_v5.05.tar.gz #進入目錄 cd FastDFS #編譯 ./make.sh #安裝 ./make.sh install

4.5、拷貝配置文件

cp /usr/local/fastdfs/FastDFS/conf/* /etc/fdfs/

4.6、配置Tracker

#作為文件存儲目錄,可以自行定義 mkdir /home/fastdfs vim /etc/fdfs/tracker.conf

tracker.conf

base_path=/home/fastdfs

4.7、配置Storage

#作為文件存儲目錄,可以自行定義 mkdir /home/fastdfs/fdfs_storage vim /etc/fdfs/storage.conf

storage.conf

base_path=/home/fastdfs store_path0=/home/fastdfs/fdfs_storage tracker_server=.101.34.116.9:22122

4.8、啟動

[root@VM-0-3-centos bin]# pwd /usr/bin [root@VM-0-3-centos bin]# fdfs_trackerd /etc/fdfs/tracker.conf restart [root@VM-0-3-centos bin]# fdfs_storaged /etc/fdfs/storage.conf restart [root@VM-0-3-centos bin]# ps -ajx|grep fdfs1 15717 15716 15716 ? -1 Sl 0 0:00 fdfs_trackerd /etc/fdfs/tracker.conf restart1 17544 17543 17543 ? -1 Sl 0 0:00 fdfs_storaged /etc/fdfs/storage.conf restart 11458 17573 17572 11458 pts/0 17572 R+ 0 0:00 grep --color=auto fdfs [root@VM-0-3-centos bin]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1383/master tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 15717/fdfs_trackerd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1495/sshd tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 17544/fdfs_storaged tcp6 0 0 ::1:25 :::* LISTEN 1383/master tcp6 0 0 :::22 :::* LISTEN 1495/sshd

5、文件上傳

5.1、導入依賴

<dependencies><dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27.0.0</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.8.0</version></dependency> </dependencies>

5.2、配置文件

##fastdfs-client.properties fastdfs.connect_timeout_in_seconds = 5 fastdfs.network_timeout_in_seconds = 30 fastdfs.charset = UTF-8 fastdfs.http_anti_steal_token = false fastdfs.http_secret_key = FastDFS1234567890 fastdfs.http_tracker_http_port = 80 fastdfs.tracker_servers = 101.34.116.9:22122

5.3、測試

public class FastDFSTest {@Testpublic void upload_file() throws IOException, MyException {// 加載配置文件ClientGlobal.initByProperties("fastdfs-client.properties");// 創建tracker客戶端TrackerClient trackerClient=new TrackerClient();// 通過tracker客戶端獲取tracker的連接服務TrackerServer connection = trackerClient.getConnection();// 聲明storage服務StorageServer storageServer=null;// 定義storage客戶端StorageClient storageClient = new StorageClient(connection, storageServer);// 元數據NameValuePair[] nameValuePair = new NameValuePair[1];nameValuePair[0]=new NameValuePair("fileName","witch");// 上傳文件String[] strings = storageClient.upload_file("C:\\Users\\yoya\\Pictures\\1555296384.jpeg", "jpeg", nameValuePair);System.out.println(Arrays.toString(strings));connection.close();// [group1, M00/00/00/rBEAA2EJE8qAGmD5AAOoqzLzJBg09.jpeg]} }

6、文件查詢

public class FastDFSTest {@Testpublic void select_file() throws IOException, MyException {// 加載配置文件ClientGlobal.initByProperties("fastdfs-client.properties");// 創建tracker客戶端TrackerClient trackerClient=new TrackerClient();// 通過tracker客戶端獲取tracker的連接服務TrackerServer connection = trackerClient.getConnection();// 聲明storage服務StorageServer storageServer=null;// 定義storage客戶端StorageClient storageClient = new StorageClient(connection, storageServer);// 查詢文件FileInfo fileInfo = storageClient.query_file_info("group1", "M00/00/00/rBEAA2EJE8qAGmD5AAOoqzLzJBg09.jpeg");System.out.println(fileInfo);connection.close();// source_ip_addr = 172.17.0.3, file_size = 239787, create_timestamp = 2021-08-03 18:00:42, crc32 = 854795288} }

7、文件下載

public class FastDFSTest {@Testpublic void download_file() throws IOException, MyException {// 加載配置文件ClientGlobal.initByProperties("fastdfs-client.properties");// 創建tracker客戶端TrackerClient trackerClient=new TrackerClient();// 通過tracker客戶端獲取tracker的連接服務TrackerServer connection = trackerClient.getConnection();// 聲明storage服務StorageServer storageServer=null;// 定義storage客戶端StorageClient storageClient = new StorageClient(connection, storageServer);// 查詢文件byte[] bytes = storageClient.download_file("group1", "M00/00/00/rBEAA2EJE8qAGmD5AAOoqzLzJBg09.jpeg");FileOutputStream fileOutputStream = new FileOutputStream(new File("D:/123.jpeg"));fileOutputStream.write(bytes);fileOutputStream.close();connection.close();System.out.println("下載成功");} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java分布式篇5——FastDFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。