Artikel ini terutama mempelajari konten terkait contoh penggunaan klien Java FastDFS, dan implementasi spesifik adalah sebagai berikut.
Apa itu FastDFS?
FastDFS adalah sistem file terdistribusi sumber terbuka yang ditulis dalam bahasa C. FastDFS dibuat khusus untuk internet, sepenuhnya mempertimbangkan mekanisme seperti cadangan yang berlebihan, penyeimbangan beban, dan ekspansi kapasitas linier, dan memperhatikan indikator seperti ketersediaan tinggi dan kinerja tinggi. Sangat mudah untuk membangun cluster server file berkinerja tinggi untuk memberikan unggahan file, unduhan dan layanan lain menggunakan FastDFS.
Arsitektur FastDFS
Arsitektur FastDFS mencakup server pelacak dan server penyimpanan. Klien meminta server pelacak untuk mengunggah dan mengunduh file, dan server penyimpanan akhirnya akan mengunggah dan mengunduh file melalui penjadwalan Tracker Server. Fungsi server pelacak adalah penyeimbangan dan penjadwalan beban. Saat mengunggah file melalui Server Tracker, Anda dapat menemukan server penyimpanan untuk menyediakan layanan pengunggahan file sesuai dengan beberapa strategi. Pelacak dapat disebut server pelacakan atau server pengiriman. Tujuan server penyimpanan adalah penyimpanan file. File yang diunggah oleh klien akhirnya disimpan di server penyimpanan. Server Penyimpanan tidak mengimplementasikan sistem file sendiri tetapi menggunakan sistem file sistem operasi untuk mengelola file. Penyimpanan dapat disebut server penyimpanan.
Contoh
1. Buat Proyek web Maven yang disebut
File-Manager: mvnarchetype: create-dgroupid = platform.activity.fileManager-dartifactId = File-Manager-DarchetypeArTifactId = maven-archetype-webapp
2. Tentukan file klien 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 = fastdfs1234567890 192.168.1.156:22122#tracker_server = 192.168.1.188:22122#Storage_Server = 192.168.1.155:23000#Tidak perlu di sini
3. Tentukan antarmuka konfigurasi:
Paket com.chuanliu.platform.activity.fm.Manager; impor java.io.serializable; antarmuka publik filemanagerconfig memperluas serializable {public static final string file_default_width = "120"; string final statis publik file_default_height = "120"; string final public static file_default_author = "diandi"; Public Static Final String Protocol = "http: //"; public static final string pemisah = "/"; string final public static tracker_ngnix_port = "8080"; string final public static client_config_file = "fdfs_client.conf"; }4. Encapsulate Bean File FastDFS
Paket com.chuanliu.platform.activity.fm.manager; kelas publik fastdfsfile mengimplementasikan filemanagerconfig {private static final long serialversionuid = -996760121932438618l; nama string pribadi; konten byte pribadi []; Private String ext; private string height = file_default_height; private string width = file_default_width; Private String Author = file_default_author; public fastdfsfile (name string, byte [] konten, string ext, string tinggi, lebar string, string penulis) {super (); this.name = name; this.content = konten; this.ext = ext; this.height = tinggi; this.width = lebar; this.author = penulis; } public fastdfsfile (nama string, byte [] konten, string ext) {super (); this.name = name; this.content = konten; this.ext = ext; } byte publik [] getContent () {return content; } public void setContent (byte [] konten) {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 (string worhor) {this.author = penulis; } public string getName () {return name; } public void setName (name string) {this.name = name; }}5. Tentukan kelas Core FileManager, yang berisi metode untuk mengunggah, menghapus, dan mendapatkan file:
Paket com.chuanliu.platform.activity.fm.manager; impor java.io.file; impor java.io.ioException; org.csource.fastdfs.fileInfo; impor org.csource.fastdfs.serverinfo; impor org.csource.fastdfs.storageclient; impor org.csource.trackerfs.storageServer; impor org.csource.fastdfs.trackercer; com.chuanliu.platform.activity.basic.util.loggerutils; kelas publik FileManager mengimplementasikan filemanagconfig {private static final long serialversionuid = 1L; private static logger = logger.getercclient trackers (filemanager.class); tracker trackerclient private staticclient trackercclient; private stativercclient trackerer; clacerercclass; classcleSclass); private static trackerclient trackerclient trackervercclient trackercclient; prajurit staticclient trackercclient; private trackerercclient trackerer; clacerercclever; classigercclass; storageServer;private static StorageClient storageClient;static {// Initialize Fast DFS Client configurationstry {String classPath = new File(FileManager.class.getResource("/").getFile()).getCanonicalPath();String fdfsClientConfigFilePath = classPath + File.separator + Client_config_file; logger.info ("Path file konfigurasi DFS cepat:" + fdfsclientConfigFilePath); clientglobal.init (fdfsclientConfigFilePath) (trackerClient = trackerClient (); trackerserver = trackerClient.getConnection (); trackerclient (); trackerserver = trackerclient.getConnection (); trackerclient (); trackerserver = trackerClient.getConnection (); trackClient (); trackerserver = trackerClient.getConnection (); StorageServer);} catch (pengecualian e) {loggerutils.error (logger, e);}} unggah string statis public (file fastdfsfile) {loggerutils.info (logger, "nama file:" + file. NamevaluePair [3]; meta_list [0] = new namevaluePair ("lebar", "120"); meta_list [1] = new namevaluePair ("heigth", "120"); meta_list [2] = new namevaluepair ("" diandi "(2] = new namevaluepair (" "diandi"; System.currentTimeMillis (); String [] unggahResults = null; coba {unggahResults = storageClient.upload_file (file.getContent (), file.getext (), meta_list);} unggas (ioException e) {Logger.error ("io pengecualian); E);} catch (pengecualian e) {logger.error ("non io pengecualian saat mengunggah file:" + file.getname (), e);} logger.info ("unggah_file waktu yang digunakan:" + (unggah. fail, error code: " + storageClient.getErrorCode());}String groupName = uploadResults[0];String remoteFileName = uploadResults[1];String fileAbsolutePath = PROTOCOL + trackerServer.getInetSocketAddress().getHostName() + SEPARATOR + TRACKER_NGNIX_PORT + SEPARATOR + groupName + SEPARATOR + RemoteFileName; loggerutils.info (logger, "Berhasil unggah !!!" + "group_name:" + groupName + ", RemoteFileName:" + " + RemoteFileName); return fileAsolutePath;} public static FileInfo getFile (string groupName, string remotefilenePath; storageClient.get_file_info(groupName, remoteFileName);}catch (IOException e) {logger.error("IO Exception: Get File from Fast DFS failed", e);}catch (Exception e) {logger.error("Non IO Exception: Get File from Fast DFS failed", e);}return null;}public static void deleteFile(String groupName, String remoteFileName) throws Exception {storageClient.delete_file(groupName, remoteFileName);}public static StorageServer[] getStoreStorages(String groupName) throws IOException {return trackerClient.getStoreStorages(trackerServer, groupName);}public static ServerInfo[] getFetchStorages (String groupName, String RemoTeFileName) melempar IoException {return trackerClient.GetFetchStorages (Trackerserver, GroupName, RemoteFileName);}}6. Kelas Uji Uji Unit
Manajer Paket; Impor java.io.file; impor java.io.fileinputstream; impor org.csource.fastdfs.fileInfo; impor org.csource.fastdfs.serverinfo; impor org.csource.fastdfs.storageServer; com.chuanliu.platform.activity.fm.manager.fastdfsfile; import com.chuanliu.platform.activity.fm.manager.filemanager;/** * @author josh wang (sheng) * @email [email protected] */class public class public) = new File("C://520.jpg");FileInputStream fis = new FileInputStream(content);byte[] file_buff = null;if (fis != null) {int len = fis.available();file_buff = new byte[len];fis.read(file_buff);}FastDFSFile file = new Fastdfsfile ("520", file_buff, "jpg"); string fileAbsolutePath = filemanager.upload (file); system.out.println (fileAbsolutePath); fis.close ();}@test void getFile () lemparan pengecualian {fileInfo file =); "M00/00/00/wKgBm1N1-CiANRLmAABygPyzdlw073.jpg");Assert.notNull(file);String sourceIpAddr = file.getSourceIpAddr();long size = file.getFileSize();System.out.println("ip:" + sourceIpAddr + ",size:" + size);}@Test public void getStorageServer () melempar pengecualian {StorageServer [] ss = filemanager.getStorestorages ("group1"); assert.notnull (ss); untuk (int k = 0; k <ss.length; k ++) {system.err.println (k + 1 + "." ss [k] .getInetSocketAddress (). getAddress (). getHostAddress () + ":" + ss [k] .getinetsocketAddress (). getport ());}@uji public void getFetchStorages () melempar pengecualian {serverinfo [] server = server = server = server = "server "M00/00/00/WKGBM1N1-CIANRLMAABYGPYZDLW073.JPG"); assert.notnull (server); untuk (int k = 0; k <server.length; k ++) {System.R.Println (K + 1 + "." server [k] .getport ());}}}
Meringkaskan
Di atas adalah semua konten dari artikel ini tentang penggunaan kode contoh klien Java FastDFS, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!