Cet article étudie principalement le contenu lié des exemples d'utilisation des clients Java FastDFS, et la mise en œuvre spécifique est la suivante.
Qu'est-ce que FastDFS?
FastDFS est un système de fichiers distribué open source écrit en langue C. FastDFS est fabriqué sur mesure pour Internet, considérant pleinement les mécanismes tels que la sauvegarde redondante, l'équilibrage de la charge et l'expansion de la capacité linéaire, et en faisant attention à des indicateurs tels que la haute disponibilité et les hautes performances. Il est facile de créer un cluster de serveur de fichiers haute performance pour fournir le téléchargement de fichiers, le téléchargement et d'autres services à l'aide de FastDFS.
Architecture FastDFS
L'architecture FASTDFS comprend Tracker Server et Storage Server. Le client demande au serveur Tracker de télécharger et de télécharger des fichiers, et le serveur de stockage téléchargera et téléchargera enfin des fichiers via la planification du serveur Tracker. La fonction du serveur Tracker est l'équilibrage et la planification de charge. Lors du téléchargement de fichiers via Tracker Server, vous pouvez trouver le serveur de stockage pour fournir des services de téléchargement de fichiers en fonction de certaines stratégies. Un tracker peut être appelé un serveur de suivi ou un serveur de répartition. Le but du serveur de stockage est le stockage de fichiers. Les fichiers téléchargés par le client sont finalement stockés sur le serveur de stockage. Storage Server n'implémente pas son propre système de fichiers mais utilise le système de fichiers du système d'exploitation pour gérer les fichiers. Le stockage peut être appelé un serveur de stockage.
Exemple
1. Créez un webproject maven appelé
File-Manager: MvNarcheType: Create-DgroupId = Platform.Activity.FileManager-DartifACTID = File-Manager-DarchetyTearFactId = Maven-ArcheType-webapp
2. Définissez un fichier client 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 = rapide 192.168.1.156:22122#Tracker_Server = 192.168.1.188:22122#Storage_Server = 192.168.1.155:23000 #No a besoin ici
3. Définissez une interface de configuration:
package com.chuanliu.platform.activity.fm.manager; import java.io.serializable; interface publique FileManagerConfig étend serializable {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: //"; Séparateur de chaîne finale statique publique = "/"; public static final String tracker_ngnix_port = "8080"; public static final string client_config_file = "fdfs_client.conf"; }4. Encapsuler un foyer fastdfs
package com.chuanliu.platform.activity.fm.manager; public class fastdfsfile implémente fileManagerConfig {private static final SerialVersionUID = -996760121932438618l; nom de chaîne privé; contenu octet privé []; chaîne privée ext; private String height = file_default_height; Largeur de chaîne privée = file_default_width; String privé auteur = file_default_author; public fastdfsfile (nom de chaîne, contenu byte [], chaîne ext, string hauteur, largeur de chaîne, auteur de chaîne) {super (); this.name = name; this.Content = contenu; this.EXT = ext; this.height = hauteur; this.width = largeur; this.author = auteur; } public fastdfsfile (nom de chaîne, contenu byte [], chaîne ext) {super (); this.name = name; this.Content = contenu; this.EXT = ext; } octet public [] getContent () {return Content; } public void setContent (byte [] contenu) {this.Content = contenu; } public String getext () {return ext; } public void sext (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 (width de chaîne) {this.width = width; } public String getAuthor () {return auteur; } public void setAuthor (String Auteur) {this.author = auteur; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; }}5. Définissez la classe Core FileManager, qui contient des méthodes de téléchargement, de supprimer et d'obtenir des fichiers:
package 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.clientglobal; import org.csource.fastdfs.fileinfo; import org.csource.fastdfs.serverinfo; import org.csource.fastdfs.storageclient; import org.csource.fastdfs.storageserver; import org.csource.fastdfs.trackerclient; Import Org.csource.fastdfs. com.chuanliu.platform.activity.basic.util.loggerutils; classe publique FileManager implémente FileManagerConfig {private static final SerialVersionUID = 1l; private static logger logger = logger.getlogger (filemanager.classeur privé Static STOCHERCLIENTLIENT; StorageServer; private static StorageClient StorageClient; static {// initialize Fast DFS Client ConfigurationsTry {String classPath = new File (fileManager.class.getResource ("/"). GetFile ()). GetCanonicalPath (); String FdfsClientConfilePath = ClassPath + file.Searator + Client_config_file; logger.info ("Chemin de fichier de configuration Fast DFS:" + FDFSClientConfigFilePath); ClientGlobal.Init (FDFSClientConfigFilePath); trackerCLIENT = new trackerClient (); trackerserver = trackerServer,) (); StorageClient = new StorecLent (TrackerServer,,); StorageClient = new StorecLitor (TrackerServer,,); StorageClient = New StorecLent. StorageServer);} catch (exception e) {LoggerUtils.Error (logger, e);}} public static static upload (FastDfsfile file) {LoggerUtils.info (Logger, "File Name NameValuepair [3]; meta_list [0] = new nameValuepair ("width", "120"); meta_list [1] = new nameValuepair ("heigth", "120"); meta_list [2] = new nameValuepair ("Author", "string"); null; try {uploadResults = storageclient.upload_file (file.getContent (), file.getExt (), meta_list);} catch (ioException e) {Logger.error ("io exception lorsque le fichier a uploadin file.getName (), e);} logger.info ("upload_file time utilisé:" + (system.currentTimemillis () - starttime) + "ms"); if (uploadResults == null) {loggerUtils.error (logger, "uploadResults Fail, code d'erreur:" + storageClient.GeTrorCode ());} uploadResults [0]; String RemoteFileName = uploadResults [1]; String FileAbSoluPath = Protocol + trackerServer.getinetsocketAddress (). GethostName () + séparateur + tracker_ngnix_port + séparateur + groupe + séparateur + déformation GroupName + ", RemoteFileName:" + "" + RemoteFileName); return FileAbSoluPath;} public static fileInfo getFile (String GroupName, String RemoteFileName) {try {return storageClient.get_file_info (GroupName, RemoteFileName);} Catch (ioException e) {Logger.Error ("io exception: From From File DFS a échoué ", e);} catch (exception e) {logger.error (" Exception non IO: obtenir un fichier de Fast DFS échoué ", e);} return null;} public static void DeleteFile (String GroupName (String GetStoreStorages (String GroupName) lève IOException {return trackerCLIENT.GetStoreStorages (trackerserver, groupName);} public static serverInfo [] getFetchStorages (String GroupNamename) lance ioException {return trackerClIENT.}6. Classe de test d'unité unitaire
Gestionnaire de packages; import java.io.file; import java.io.fileInputStream; import org.csource.fastdds.fileInfo; import org.csource.fastdfs.serverinfo; import org.csource.fastdsdfs.storageServer; import org.junit.test; import org.springframeworkwork.util.ass. com.chuanliu.platform.activity.fm.manager.fastdfsfile; import com.chuanliu.platform.activity.fm.manager.filemanager; / ** * @author josh wang (sheng) * * @email [email protected] * / public Class testfilemanger {@Tester VODOC {File content = new File ("c: //520.jpg"); fileInputStream fis = new FileInputStream (contenu); byte [] file_buff = null; if (fis! = Null) {int len = fis.available (); file_buff = new Byte [Len]; fis.read (file_buff);} FastDfSFile File FastDFSFile("520", file_buff, "jpg");String fileAbsolutePath = FileManager.upload(file);System.out.println(fileAbsolutePath);fis.close();}@Test public void getFile() throws Exception {FileInfo file = FileManager.getFile("group1", "M00 / 00/00 / wkgbm1n1-cianrlmaabygpyzdlw073.jpg"); assert.notnull (file); string sourceIpaddr = file.getsourceipaddr (); long size = file.getFileSize (); System.out.println ("ip:" + sourceIpaddr + ", tail getStorageServer () lève une exception {StorageServer [] ss = filemanager.getStoreStorages ("groupe1"); assert.notnull (ss); for (int k = 0; k <ss.length; k ++) {System.err.println (k + 1 + "." + ss [k] .getineTsocketAddress (). getAddress (). GethostAddress () + ":" + ss [k] .getineTsocketAddress (). getport ());}} @ test public void getFetchStorages () lance l'exception {serverinfo [] servers = filemanager.getfetchStorages ("" groupe1 ", serveurs = filemanager.getFetchStorages (" "", ",, serveurs = filemanager.getFetchStorages (" Group1 ", SERVERS = FileMeager.getFetchStorages (" "Group1", SERVERS = FileMeager.getFetchStorages ("" "", "M00 / 00/00 / wkgbm1n1-cianrlmaabygpyzdlw073.jpg"); assert.notnull (serveurs); pour (int k = 0; k <serveurs.length; k ++) {system.err.println (k + 1 + "." + Serveurs [k] .getIpaDDR () + ":" + serveurs [k] .getport ());}}}
Résumer
Ce qui précède est tout le contenu de cet article sur l'utilisation du code d'instance du client Java FastDFS, et j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!