Эта статья в основном изучает содержимое примеров использования клиента Java FASTDFS, и конкретная реализация заключается в следующем.
Что такое FASTDFS?
FASTDFS - это распределенная файловая система с открытым исходным кодом, написанная на языке C. FASTDFS создан специально для Интернета, полностью рассматривая такие механизмы, как избыточное резервное копирование, балансировка нагрузки и расширение линейных мощностей, а также уделение внимания таким показателям, как высокая доступность и высокая производительность. Легко создать высокопроизводительный кластер файловых серверов для обеспечения загрузки, загрузки, загрузки и других услуг с использованием FASTDFS.
Архитектура FASTDFS
Архитектура FATHDFS включает в себя сервер трекеров и сервер хранения. Клиент запрашивает сервер трекеров для загрузки и загрузки файлов, а сервер хранения наконец -то загрузит и загружает файлы через планирование сервера трекера. Функцией сервера трекера является балансировка нагрузки и планирование. При загрузке файлов через сервер Tracker вы можете найти сервер хранения для предоставления услуг загрузки файлов в соответствии с некоторыми стратегиями. Трекер можно назвать сервером отслеживания или сервера диспетчеризации. Целью сервера хранения является хранилище файлов. Файлы, загруженные клиентом, в конечном итоге хранятся на сервере хранения. Сервер хранения не реализует свою собственную файловую систему, но использует файловую систему операционной системы для управления файлами. Хранение можно назвать сервером хранения.
Пример
1. Создайте веб -проект Maven под названием
File-Manager: MVNARCHETYPE: CREATE-DGRUPID = PLARTIONS.Activity.FILENAGER-DARTIFACTID = FILE-MANAGERTYPEARTIFACTID = MAVEN-ARHETYPE-WEBAPP
2. Определите клиент FASTDFS FILE FDFS_CLIENT.CONF:
class = "Properties" name = "code"> connect_timeout = 2network_timeout = 30Charset = utf-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = fastdfs1234567890tracker_server = 192.168.1.156:221222#Tracker_server = 192.168.1.188:221222#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 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 Seperator = "/"; Public Static Final String Tracker_ngs_port = "8080"; public Static Final String client_config_file = "fdfs_client.conf"; }4. Инкапсулируйте фасоль FASTDFS
пакет com.chuanliu.platform.activity.fm.manager; открытый класс Fastdfsfile реализует FileManagerConfig {Private Static Final Long Serialversionuid = -996760121932438618L; Приватное название строки; частный байт [] содержание; частная строка ext; Private String Height = file_default_height; Приватная строка width = file_default_width; Private String Author = file_default_author; public fastdfsfile (string name, byte [] content, string ext, string height, string width, string author) {super (); this.name = name; this.content = content; this.ext = ext; this.height = высота; this.width = ширина; this.author = автор; } public FASTDFSFILE (имя строки, 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 Author; } public void setAuthor (строка автор) {this.Author = Author; } public String getName () {return name; } public void setName (string name) {this.name = name; }}5. Определите класс Core FileManager, который содержит методы для загрузки, удаления и получения файлов:
пакет com.chuanliu.platform.activity.fm.manager; import java.io.file; импорт java.io.ioexception; import org.apache.log4j.logger; import org.csource.common.namevaluepair; импорт org.csource.fastg.clientglobal; импорт. org.csource.fastdfs.serverinfo; импорт org.csource.fastdfs.storageclient; import org.csource.fastdfs.storageserver; импорт org.csource.fastdfs.trackerclient; импорт 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 {// инициализировать Fast DFS Client Configurationstres {String classPath = новый файл (fileManager.class.getResource ("/"). getFile ()). getCanonicalPath (); Strend FdfsCliGfilepath = classPath +.separator +.separator +.separator +. Client_config_file; logger.info ("Проезд файла Fast DFS конфигурации:" + fdfsClientConfigFilePath); ClientGlobal.init (fdfsClientConfigfilePath); Trackerclient = new Trackerclient (); TrackerServer = TrackerClient.GetConcec StorageServer);} Catch (Exception e) {loggerutils.error (logger, e);}} public Static String upload (fastdfsfile file) {loggerutils.info (logger, «Имя файла:" + file.getName () + "Dline:" + file.getContent (). NamevaluePair [3]; Meta_list [0] = new namevaluepair («ширина», «120»); meta_list [1] = new namevaluepair ("heigth", "120"); meta_list [2] = new namevaluepair ("Автор", "diandi"); null; try {uploadresults = storageclient.upload_file (file.getContent (), file.getext (), meta_list);} catch (ioexception e) {logger.error ("io excection при загрузке файла:" + file.getName (), e); " + file.getName (), e);} logger.info (" upload_file используется: " + (system.currenttimemillis () - starttime) +" ms "); if (oploadresults == null) {loggerutils.error (logger," upload fail, код ошибки: " + storAgeclient.getercode (); uploadresults [0]; string remotefilename = uploadresults [1]; string fileabsolutepath = protocol + trackererver.getinetsocketaddress (). gethostname () + seperator + tracker_ngnix_port + seperator + GroupName + sepreator + remotefilename; " + GroupName +", remoteFilEname: " +" " + remoteFilEname); return fileAbsolutePath;} public static fileInfo getFile (String GroupName, String remoteFilEname) {try {return storageclient.get_file_info (GroupName, remoteFilename); Получить файл из Fast DFS не удастся ", e);} Catch (Exception e) {logger.error (" non io Exception: получить файл из Fast DFS не удалось ", e);} return null;} public static void deletefile (String GroupName, String remotefilename) thriple execute {storageclient.delete_file (GroupName retotefilEnme) StorageServer [] getStorestorages (String GroupName) Throws IOException {return Trackerclient.getStorestorages (TrackerServer, GroupName);} public static serverInfo [] getFetchStorages (String GroupName, String remoteFilename) Throus IoExcept remotefilename);}}6. класс тестового тестирования модуля
Менеджер пакетов; импорт java.io.file; импорт java.io.fileinputstream; import org.csource.fastdfs.fileinfo; импорт org.csource.fastdfs.serverinfo; импорт org.csource.fastdfs.storageserver; import org.junit.test; com.chuanliu.platform.activity.fm.manager.fastdfsfile; import com.chuanliu.platform.activity.fm.manager.filemanager;/** * @author josh Wang (Sheng) * * @email [email protected] */public class testfilemanager {@testest upluid Новый файл ("c: //520.jpg"); fileInputStream fis = new FileInputStream (content); byte [] file_buff = nul file_buff, "jpg"); string fileabesolutepath = filemanager.upload (file); system.out.println (fileabesolutepath); fis.close ();}@test public void getFile () исключает {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:" + sickeSipaddr + ", size wipdepd wise stice.tepode); getStorageServer () Throws Exception {StorageServer [] ss = fileManager.getStorEStorages ("Group1"); Assert.notnull (ss); для (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 () Throws Exception {serverInfo [] servers = filmanager.getfetchstorages (group1 ", {serverInfo [] servers = filmanager.getfetchstorages (group1", "M00/00/00/wkgbm1n1-cianrlmaabygpyzdlw073.jpg"); assert.notnull (серверы); для (int k = 0; k <servers.length; k ++) {System.err.println (k + 1 + ". + Servers [k]. Servers [k] .getPort ());}}}
Суммировать
Выше приведено все содержание этой статьи об использовании кода экземпляра клиента Java FastDFS, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!