Dieser Artikel untersucht hauptsächlich die Inhalte von Java FastDFS -Kundennutzungsbeispielen, und die spezifische Implementierung ist wie folgt.
Was ist Fastdfs?
FastDFS ist ein Open -Source -verteilter Dateisystem, das in C -Sprache geschrieben wurde. FastDFS ist für das Internet maßgeschneidert und berücksichtigt die Mechanismen wie redundante Backups, Ladungsausgleich und lineare Kapazitätserweiterung sowie die Beachtung von Indikatoren wie hoher Verfügbarkeit und hoher Leistung. Es ist einfach, einen Hochleistungs-Dateiserver-Cluster zu erstellen, um mit FastDFS Datei-Upload, Download und andere Dienste bereitzustellen.
FASTDFS -Architektur
Die FastDFS -Architektur umfasst Trackerserver und Speicherserver. Der Client fordert den Tracker -Server zum Hochladen und Herunterladen von Dateien an, und der Speicherserver lädt schließlich Dateien über die Planung von Tracker Server hoch und lädt sie ab. Die Funktion des Tracker -Servers ist das Ausgleich und die Planung von Ladeausgleich. Beim Hochladen von Dateien über Tracker Server finden Sie den Speicherserver, um Datei -Upload -Dienste entsprechend einiger Strategien bereitzustellen. Ein Tracker kann als Tracking -Server oder Versandserver bezeichnet werden. Der Zweck des Speicherservers ist die Dateispeicherung. Die vom Client hochgeladenen Dateien werden letztendlich auf dem Speicherserver gespeichert. Storage Server implementiert kein eigenes Dateisystem, verwendet jedoch das Dateisystem des Betriebssystems, um Dateien zu verwalten. Speicher kann als Speicherserver bezeichnet werden.
Beispiel
1. Erstellen Sie ein Maven WebProject aufgerufen
Dateimanager: mvNarchetype: create-dgroupid = platform.Activity.filemanager-dartifactid = Datei-Manager-Darchetypeartifactid = maven-archetype-Webapp
2. Definieren Sie eine FastDFS -Client -Datei fdfs_client.conf:
class = "properties" name = "code"> connect_timeout = 2network_timeout = 30Charset = utf-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = fastdfs123457890Tracker_Server 192.168.1.156:22122#tracker_server = 192.168.1.188:2222#storage_Server = 192.168.1.155:23000 #no benötigen hier
3. Definieren Sie eine Konfigurationsschnittstelle:
Paket com.chuanliu.platform.Activity.fm.Manager; importieren java.io.ioSerializable; öffentliche Schnittstelle FileManAGerFig erweitert serialisierbar {public static Final String file_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 trenner = "/"; public static Final String Tracker_Ngnix_port = "8080"; public static final String client_config_file = "fdfs_client.conf"; }V.
Paket com.chuanliu.platform.Activity.fm.Manager; öffentliche Klasse Fastdfsfile implementiert FilemanAGerConfig {private statische endgültige lange Serialversionuid = -996760121932438618L; privater Zeichenfolge Name; privates Byte [] Inhalt; private Zeichenfolge ext; private Zeichenfolge Höhe = Datei_Default_Height; private Zeichenfolge width = file_default_width; private String author = file_default_author; public fastdfsfile (String -Name, Byte [] Inhalt, String ext, Stringhöhe, String -Breite, String -Autor) {Super (); this.name = name; this.content = content; this.ext = ext; this.height = Höhe; this.width = width; this.author = Autor; } public fastdfsfile (String -Name, Byte [] Inhalt, 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 (Stringhöhe) {this.height = Höhe; } public String getWidth () {Rückkehr Breite; } public void setwidth (String -Breite) {this.width = width; } public String getAuthor () {return Author; } public void setAuthor (String -Autor) {this.author = Autor; } public String getName () {return name; } public void setName (String -Name) {this.name = name; }}5. Definieren Sie die Core Filemanager -Klasse, die Methoden zum Hochladen, Löschen und Erhalten von Dateien enthält:
Paket com.chuanliu.platform.Activity.fm.Manager; Import java.io.file; import Java.io.ioxception; import org.apache.log4j.logger; import org.csource.common org.csource.fastdfs.fileinfo; import org.csource.fastdfs.serverinfo; import org.csource.fastdfs.storageClient; com.chuanliu.platform.Activity.basic.util.loggerutils; öffentliche Klasse filemanager implementiert fileManagerconfig {private statische endgültige long serialversionuid = 1l; private static logger logger StorageServer; private statische statische StorageClient StorageClient; static {// Initialisieren Sie schnelle dfs client configurationsstry {String classPath = new Datei (filemanager.class.getResource ("/"). getFile ()). getCanonicalPath (); Client_config_file; logger.info ("FAST DFS -Konfigurationsdatei Pfad:" + fdfsclientConfigFilePath); clientGlobal.init (fdfsclientConFigFilePath); TrackerClient = New TrackerClient () TrackerClient.getConnection (); StorageServer);} catch (Ausnahme E) {loggerutils.Error (logger, e);}} öffentlicher statischer String -Upload (FastDFSFile -Datei) {loggerutils.info (logger, "Datei Name:" + Datei.getName () + "Dateilänge:" + Datei. NAMEVALUEPAIR [3]; meta_list [0] = neuer namevaluepair ("width", "120"); meta_list [1] = new namevaluepair ("hieth", "120"); meta_list [2] = new namevaluepair ("Autor", "diandi"; = null; try {uploadResults = storageclient.upload_file (file.getContent (), file.getext (), meta_list);} catch (ioException e) {logger.Error ("io Ausnahme, wenn Uploadind the Datei:" + Datei. " + file.getName (), e);} logger.info (" Upload_file -Zeit verwendet: " + (System.currentTimillis () - StartTime) +" ms "); if (UploadResults == null) {Loggerutils.Error (logger," upload fehlgeschlagen, error code: " + storageclient.GetRorcode (). UploadResults [0]; String remoteFileName = UploadResults [1]; String fileAbSepath = Protocol + TrackerServer.getInetSocketadDress (). Gethostname () + Separator + Tracker_ngniX_port + Separator + Gruppenname + Separator + RemoteFilename; + "Group_Name:" + GroupName + ", RemoteFileName:" + "" + remoteFileName); Rückkehr fileabSolutepath;} public static FileInfo getFile (String GroupName, String RemoteFileName) {try {return storageclient.get_file_info (gruppyname, remotefileName); {Logger.Error ("IO -Ausnahme: Datei von FAST DFS fehlgeschlagen", e);} catch (Ausnahme E) {Logger.Eror ("Non -io -Ausnahme: Datei von FAST DFS fehlgeschlagen", e);} null;} public static void deletFile (String Groupname, Sting RemoteFileName) Throws {Storageclient.delTeName (Gruppenname) Throws oder RemoteFileName);} public static StorageServer [] getStorestorages (String GroupName) löscht ioException {return TrackerClient.getStorestorages (TrackerServer, GroupName);} public static serverfo [] getFetchstors (String GroupName, String RemoteFilename) Throws ioException {Return {Return {Return {Return {Return { TrackerClient.getFetchstorage (TrackerServer, GroupName, RemoteFileName);}}6. Unit -Test -Testklasse
Paketmanager; import Java.io.file; import Java.io.fileinputStream; import org.csource.fastdfs.fileinfo; import org.csource.fastdfs.Serverinfo; com.chuanliu.platform.Activity.fm.Manager.fastdfsFile; importieren com.chuanliu.platform.Activity.fm.Manager.Filemanager;/** * @Author Josh Wang (SHENG) * * @email josh_wang23@hotmax · public class {public class u. Neue Datei ("c: //520.jpg"); FileInputStream fis = new FileInputStream (Inhalt); byte [] file_buff = null; if (fis! Fastdfsfile ("520", file_buff, "jpg"); String fileabath = fileManager.Upload (Datei); System.out.println (fileAbSolutepath); "M00/00/00/WKGBM1N1-CIANRLLMAABYGPYZDLW073.JPG"); getStorageServer () löst Ausnahme aus {StorageServer [] ss = filemanager.getStorestorages ("Gruppe1"); ss [k] .getInetSocketaddress (). getAddress (). GethostadDress () + ":" + ss [k] .GetInetSocketadDress (). "M00/00/00/WKGBM1N1-CIANRLMAABYGPYZDLW073.JPG"); Server [k] .Getport ());}}}Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Verwendung des Instanzcode des Java Fastdfs -Kunden, und ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!