この記事は、主にJava FastDFSクライアントの使用例の関連コンテンツを研究しており、特定の実装は次のとおりです。
FASTDFSとは何ですか?
FASTDFSは、C言語で記述されたオープンソース分散ファイルシステムです。 FASTDFSは、インターネット向けに調整され、冗長バックアップ、負荷分散、線形容量の拡張などのメカニズムを完全に考慮し、高可用性や高性能などのインジケーターに注意を払っています。高性能ファイルサーバークラスターを構築して、FASTDFSを使用してファイルのアップロード、ダウンロード、その他のサービスを提供するのは簡単です。
FASTDFSアーキテクチャ
FASTDFSアーキテクチャには、トラッカーサーバーとストレージサーバーが含まれます。クライアントはトラッカーサーバーにファイルをアップロードおよびダウンロードするように要求し、ストレージサーバーは最終的にトラッカーサーバーのスケジューリングを介してファイルをアップロードおよびダウンロードします。トラッカーサーバーの機能は、ロードバランスとスケジューリングです。トラッカーサーバーを介してファイルをアップロードするときは、ストレージサーバーを見つけて、いくつかの戦略に従ってファイルアップロードサービスを提供できます。トラッカーは、追跡サーバーまたはディスパッチサーバーと呼ばれます。ストレージサーバーの目的はファイルストレージです。クライアントによってアップロードされたファイルは、最終的にストレージサーバーに保存されます。ストレージサーバーは独自のファイルシステムを実装していませんが、オペレーティングシステムのファイルシステムを使用してファイルを管理します。ストレージはストレージサーバーと呼ぶことができます。
例
1.呼び出しと呼ばれるMaven WebProjectを作成します
ファイルマネージャー:MVNARCHETYPE:create-dgroupid = platform.activity.filemanager-dartifactid = file-manager-darchetypeartifactid = maven-archetype-webapp
2。FASTDFSクライアントファイルFDFS_CLIENT.CONFを定義します:
class = "properties" name = "code"> connect_timeout = 2network_timeout = 30charset = utf-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = fastdfs12345678890tracker_server = server = server 192.168.1.156:22122#tracker_server = 192.168.1.188:22122#storage_server = 192.168.1.155:23000 #noはこちらが必要です
3。構成インターフェイスを定義します。
パッケージcom.chuanliu.platform.activity.fm.manager; import java.io.serializable; public interface filemanagerconfig extends serializable {public static final string fine_default_width = "120"; public static final string file_default_height = "120"; public static final string file_default_author = "diandi"; public static final string protocol = "http://"; public static final string separator = "/"; public static final string tracker_ngnix_port = "8080"; public static final string client_config_file = "fdfs_client.conf"; }4. FASTDFSファイルBeanをカプセル化します
パッケージcom.chuanliu.platform.activity.fm.manager; public class fastdfsfile explments filemanagerconfig {private static final long serialversionuid = -996760121932438618L;プライベート文字列名;プライベートバイト[]コンテンツ;プライベート文字列ext;プライベート文字列height = file_default_height; private string width = file_default_width;プライベート文字列著者= file_default_author; public fastdfsfile(string name、byte [] content、string ext、string height、string width、string auther){super(); this.name = name; this.content = content; this.ext = ext; this.height = height; this.width = width; this.author =著者; } public fastdfsfile(string name、byte [] content、string ext){super(); this.name = name; this.content = content; this.ext = ext; } public byte [] getContent(){return content; } public void setContent(byte [] content){this.content = content; } public string getext(){return ext; } public void setext(string ext){this.ext = ext; } public string getheight(){return height; } public void setheight(string height){this.height = height; } public string getWidth(){return width; } public void setWidth(string width){this.width = width; } public string getauthor(){return athor; } public void setauthor(string著者){this.author =著者; } public string getname(){return name; } public void setName(string name){this.name = name; }}5.ファイルのアップロード、削除、および取得の方法を含むコアファイルマナークラスを定義します。
パッケージcom.chuanliu.platform.activity.fm.manager; import java.io.file; import java.io.ioexception; import org.apache.log4j.logger; import org.csource.common.namevaluepair; import org.csource.fastdfs.clientgrientgrientgrientg.clientgrientg.csource. org.csource.fastdfs.serverinfo; Import org.csource.fastdfs.storageclient; Import org.csource.fastdfs.storageserver; Import org.csource.fastdfs.trackertient; import org.csource.fastdfs.trackerver; com.chuanliu.platform.activity.basic.util.LoggerUtils;public class FileManager implements FileManagerConfig {private static final long serialVersionUID = 1L;private static Logger logger = Logger.getLogger(FileManager.class);private static TrackerClient trackerClient;private static TrackerServer trackerServer;private static StorageServer StoragesErver; private static storageClient storageClient; static {//高速DFSクライアント構成の初期化{String classPath = new file(filemanager.class.getResource( "/")。getFile())。 client_config_file; logger.info( "高速dfs構成ファイルパス:" + fdfsclientconfigfilepath); clientglobal.init(fdfsclientconfigfilepath); trackelient = new Trackerient(); trackerserver = trackerient.getConnection( Storageserver);} catch(Exception e){loggerutils.error(logger、e);}} public static string upload(fastdfsfile file){loggerutils.info(logger、 "file name:" + file.getname()file.getName() + "file length:" + file.getContent() namevaluepair [3]; meta_list [0] = new nameValuePair( "width"、 "120"); meta_list [1] = new nameValuepair( "heigth"、 "120"); meta_list [2] = new namevaluepair( "著者"、 "diandi"); long starttime = starttime.currerdtimemememeemis(); null; try {uploadResults = storageclient.upload_file(file.getContent()、file.getext()、meta_list);} catch(ioexception e){ogger.error( "io例外:file. file.getName()、e); " + file.getName()、e);} logger.info(" upload_file使用済み: " +(system.currenttimemillis() - starttime) +" ms "); if(uploadResults == null){loggerutils.error(logger、" upload file fail、errer code: " uploadResults [0]; string remotefileName = uploadResults [1]; string fileabsolutepath = protocol + trackerserver.getinetsocketadddress()。gethostname()。gethostname + tracker_ngnix_ngnix_ngnix_ngnix_ngnix_ngnix GroupName + "、RemoteFileName:" + "" + remoteFileName); return fileabsolutepath;} public static fileinfo getFile(string groupName、string remotefileName){try {return storageclient.get_file_info(groupName、remotefileName); dfs failed "、e);} catch(exception e){logger.error(" non io exception:fast dfs failed "、e) GetStorestorages(String GroupName)IOExceptionをスロー{return TrackerClient.getStorestorages(TrackerServer、GroupName);} public Static ServerInfo [] getFetchStorages(String GroupName、String RemoteFileName)Throws IOException {Return TrackErclient.GetFetherient(TrackerServer、Group -FineName、Group -FileName、Group -FileName、Group -Filename、figleName、6.単体テストテストクラス
パッケージマネージャー; java.io.fileのインポート; java.io.fileinputStreamのインポート;インポートorg.csource.fastdfs.fileinfo; Import org.csource.fastdfs.serverinfo; Import org.csource.fastdfs.storaseerver; Import org.junitt.test; spr.splring.utest.spl.trimt.test com.chuanliu.platform.activity.fm.manager.fastdfsfile; Import com.chuanliu.platform.activity.fm.manager.filemanager;/** * @author wang(sheng) * * @email [email protected] {file content = new file( "c://520.jpg"); fileinputStream fis = new fileinputStream(content); byte [] file_buff = null; if(fis!= null){int len = fis.abaible(); file_buff = new byte [len]; fastdfsfile( "520"、file_buff "jpg"); string fileabsolutepath = filemanager.upload(file); out.println(fileabsolutepath); fis.close();} "M00/00/00/wkgbm1n1-cianrllaabygpyzdlw073.jpg"); assert.notnull(file); string sourceipaddr = file.getSourceIpaddr(); long size = file.getFilesize(); system.out.out.println(systed) getStorageServer()スロー例外{storageserver [] ss = filemanager.getStorestorages( "group1"); assert.notnull(ss); ss [k] .getinetsocketAddress()。getAddress()。gethostAddress() + ":" + ss [k] .getinetsocketaddress()。getport();}} "M00/00/00/wkgbm1n1-cianrllaabygpyzdlw073.jpg"); assert.notnull(servers); for(int k = 0; k <servers.length; k ++){system.err.println(k + 1 + "。サーバー[k] .getport());}}}
要約します
上記は、Java FastDFSクライアントのインスタンスコードの使用に関するこの記事のすべての内容であり、すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!