يدرس هذه المقالة بشكل أساسي محتويات استخدام عميل Java FastDFS ، والتنفيذ المحدد كما يلي.
ما هو fastdfs؟
FastDFS هو نظام ملفات موزع مفتوح المصدر مكتوب بلغة C. FastDFs مصممة خصيصًا للإنترنت ، مع الأخذ في الاعتبار الآليات مثل النسخ الاحتياطي المتكرر ، وموازنة التحميل ، والتوسع في السعة الخطي ، وإيلاء الاهتمام بمؤشرات مثل التوفر العالي والأداء العالي. من السهل إنشاء مجموعة خادم ملفات عالية الأداء لتوفير تحميل الملفات والتنزيل والخدمات الأخرى باستخدام FastDFs.
FastDFS الهندسة المعمارية
تتضمن بنية FastDFS خادم Tracker وخادم التخزين. يطلب العميل خادم Tracker لتحميل الملفات وتنزيلها ، وسيقوم خادم التخزين أخيرًا بتحميل الملفات وتنزيلها من خلال جدولة خادم Tracker. وظيفة خادم Tracker هي التحميل الموازنة والجدولة. عند تحميل الملفات من خلال خادم Tracker ، يمكنك العثور على خادم التخزين لتوفير خدمات تحميل الملف وفقًا لبعض الاستراتيجيات. يمكن تسمية متتبع خادم تتبع أو خادم إرسال. الغرض من خادم التخزين هو تخزين الملفات. يتم تخزين الملفات التي تم تحميلها بواسطة العميل في نهاية المطاف على خادم التخزين. لا يقوم خادم التخزين بتطبيق نظام الملفات الخاص به ولكنه يستخدم نظام ملفات نظام التشغيل لإدارة الملفات. يمكن تسمية التخزين خادم تخزين.
مثال
1. إنشاء مشروع WebProject Maven يسمى
ملف الملف: mvnarchetype: create-dgroupid = platform.activity.filemanager-dartifactid = file-manager-darchetipartifactid = 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 = fastdfs1234567890tracker_server = 192.168.
3. تحديد واجهة التكوين:
package com.chuanliu.platform.activity.fm.Manager ؛ استيراد java.io.serializable ؛ الواجهة العامة fileManagerConfig تمتد serializable {public static final file_default_width = "120" ؛ السلسلة النهائية الثابتة العامة file_default_height = "120" ؛ السلسلة النهائية الثابتة العامة file_default_author = "diandi" ؛ بروتوكول السلسلة النهائية الثابتة العامة = "http: //" ؛ فاصل السلسلة النهائية الثابتة العامة = "/" ؛ السلسلة النهائية الثابتة العامة tracker_ngnix_port = "8080" ؛ Static Final Final Client_Config_file = "FDFS_CLIENT.CONF" ؛ }4. تغليف حبة ملف FastDFS
حزمة com.chuanliu.platform.activity.fm.Manager ؛ الطبقة العامة fastdfsfile تنفذ fileManagerConfig {private static final long serialversionuid = -996760121932438618l ؛ اسم السلسلة الخاصة ؛ محتوى بايت خاص [] ؛ سلسلة خاصة ارتفاع السلسلة الخاصة = file_default_height ؛ عرض السلسلة الخاصة = file_default_width ؛ Private String Author = file_default_author ؛ public fastdfsfile (اسم السلسلة ، byte [] المحتوى ، السلسلة Ext ، ارتفاع السلسلة ، عرض السلسلة ، سلسلة المؤلف) {super () ؛ this.name = name ؛ this.content = المحتوى ؛ this.ext = ext ؛ this.height = الارتفاع ؛ this.width = العرض ؛ هذا. مؤلف = مؤلف ؛ } public fastdfsfile (اسم السلسلة ، byte [] content ، string ext) {super () ؛ this.name = name ؛ this.content = المحتوى ؛ this.ext = ext ؛ } البايت العام [] getContent () {return content ؛ } public void setContent (byte [] content) {this.content = content ؛ } السلسلة العامة getext () {return ext ؛ } public void setext (String ext) {this.ext = ext ؛ } السلسلة العامة getheight () {عودة الارتفاع ؛ } public void setheight (ارتفاع السلسلة) {this.height = الارتفاع ؛ } السلسلة العامة getWidth () {return width ؛ } public void setWidth (عرض السلسلة) {this.width = width ؛ } السلسلة العامة getAuthor () {return uptor ؛ } public void setAuthor (سلسلة مؤلف) {this.author = uptor ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ }}5. تحديد فئة Filemanager الأساسية ، التي تحتوي على طرق لتحميل الملفات وحذفها والحصول عليها:
package com.chuanliu.platform.activity.fm.manager ؛ import java.io.file ؛ import java.ioexception ؛ import org.apache.log4j.logger ؛ import org.csource.common.namevaluepair ؛ org.csource.fastdfs.fileinfo ؛ import org.csource.fastdfs.serverInfo ؛ import org.csource.fastdfs.storageClient ؛ import org.csource.fastdfs.storageserver com.Chuanliu.platform.activity.basic.util.loggerUtils ؛ فئة publimerplanager تنفذ fileManagerConfig {private static static fong serialversionuid = 1L ؛ private static logger = logger.getlogger (filemanager.class) ؛ Storageserver ؛ خاص StorageClient StorageClient ؛ ثابت {// تهيئة تكوينات عميل DFS السريعة {string classpath = fileManager.class.getResource ("/"). getFile ()). client_config_file ؛ logger.info ("مسار ملف التكوين السريع DFS:" + fdfsClientConfilePath) ؛ clientGlobal.init (fdfsclientConfiGfilePath) ؛ trackerClient = new trackerclient () ؛ trackerClient.getConnection () Storageserver) ؛} catch (استثناء e) {loggerUtils.error (logger ، e) ؛}} تحميل السلسلة الثابتة العامة (ملف fastdfsfile) {loggerUtils.info (logger ، nameValuePair [3] ؛ meta_list [0] = new nameValuePair ("width" ، "120") ؛ meta_list [1] = new namevaluepair ("heigth" ، "120") ؛ meta_list [2] = new namevaluepair ("efream" ، "diandi") ؛ null ؛ try {eploadResults = storageClient.upload_file (file.getContent () ، file.getext () ، meta_list) ؛} catch (ioException e) {logger.error ("استثناء io atploadind:" + file.getname () ؛ " + file.getName () ، e) ؛} logger.info (" upload_file الوقت المستخدم: " + (System.CurrentTimeMillis () - وقت البدء) +" MS ") ؛ if (uploadresults == null) {loggerutils.error (logger ،" تحميل ملف ، رمز الخطأ: " uploadResults [0] ؛ remotefilename = uploadresults [1] " + groupname +" ، remoteFilename: " +" " + RemoteFiLename) ؛ إرجاع fileAbsolutePath ؛} pileinfo getFile (String groupname ، string remotefilename) استثناء: الحصول على ملف من Fast DFS فشل "، e) ؛} catch (استثناء e) {logger.error (" استثناء غير IO: الحصول على ملف من Fast DFS فشل "، e) ؛} return null ؛} Storageserver [] getStorEstorages (سلسلة groupname) يلقي ioException {return trackerClient.getStorEstorages (trackerserver ، groupname) ؛} serverInfo static public [] getFetchStorages (string groupname ، string remoteFilename) RemoteFilename) ؛}}6. فئة اختبار الوحدة
مدير الحزمة ؛ استيراد java.io.file ؛ استيراد java.io.fileinputStream ؛ استيراد org.csource.fastdfs.fileinfo ؛ استيراد org.csource.fastdfs.serverInfo com.chuanliu.platform.activity.fm.manager.fastdfsfile ؛ استيراد com.chuanliu.platform.activity.fm.manager.fileManager ؛/** * @ @ @josh wang (sheng) {file content = ملف جديد ("c: //520.jpg") ؛ fileInputStream fis = new FileInputStream (content) ؛ byte [] file_buff = null ؛ if (fis! = null) {int len = fis.available () ؛ fastdfsfile ("520" ، file_buff ، "jpg") ؛ String fileAbsolutePath = fileManager.upload (file) ؛ system.out.println (fileAbsolutePath) ؛ fis.close () ؛}@test public void getFile () thows {fileInfo file = filemanager.get1 "M00/00/00/wkgbm1n1-cianrlmaabygpyzdlw073.jpg") ؛ assert.notnull (file) ؛ String sourceipaddr = file.getSourceipaddr () getStorageserver () يلقي استثناء {Storageserver [] ss = fileManager.getStorEstorages ("group1") ؛ ss [k] .getInetSocketAddress (). getaddress (). gethostaddress () + ": "M00/00/00/wkgbm1n1-cianrlmaabygpyzdlw073.jpg") ؛ assert.notnull (servers) ؛ for (int k = 0 ؛ k <خوادم. الخوادم [k] .getport ()) ؛}}}لخص
ما سبق هو كل محتوى هذه المقالة حول استخدام رمز المثيل لعميل Java FastDFS ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!