مقدمة
الحد الأدنى من المتطلبات
ابدء
اتصل بنا
Emissary هو محرك سير عمل يستند إلى تقنية P2P ويعمل في شبكة P2P غير متجانسة ومنتشرة على نطاق واسع ومتعددة الطبقات من موارد الحوسبة. لا يتم تخطيط مسارات سير العمل مسبقًا كما هو الحال في محركات سير العمل التقليدية، ولكن يتم اكتشافها عند اكتشاف المزيد من المعلومات حول البيانات. لا يوجد عادةً أي تفاعل للمستخدم في سير عمل Emissary، بل تتم معالجة البيانات بطريقة موجهة نحو الهدف حتى تصل إلى حالة الاكتمال.
يعد Emissary قابلاً للتكوين بشكل كبير، ولكن في هذا التطبيق الأساسي لا يفعل شيئًا تقريبًا. من المتوقع أن يقوم مستخدمو إطار العمل هذا بتوفير فئات تعمل على توسيع emissary.place.ServiceProviderPlace لأداء العمل على حمولات emissary.core.IBaseDataObject.
يمكن القيام بمجموعة متنوعة من الأشياء وإدارة سير العمل على مراحل، على سبيل المثال: الدراسة، والهوية، والتنسيق، والتحويل، والتحليل، والإدخال والإخراج، والمراجعة.
الفئات المسؤولة عن توجيه سير العمل هي emissary.core.MobileAgent والفئات المشتقة منه، والتي تدير مسار مجموعة من كائنات الحمولة ذات الصلة من خلال سير العمل وemissary.directory.DirectoryPlace الذي يدير الخدمات المتاحة وتكلفتها و الجودة والحفاظ على اتصال شبكة P2P.
نظام التشغيل Linux أو MacOSX
جي دي كيه 11
أباتشي ميفن 3.5+
اقرأ دليل DEVELOPING.md للحصول على معلومات حول تثبيت المكونات المطلوبة، وسحب الكود المصدري، وإنشاء Emissary وتشغيله.
قم بتشغيل mvn clean package
لتجميع واختبار وحزم المبعوث
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.132 s [INFO] Finished at: 2022-01-10T22:31:05Z [INFO] ------------------------------------------------------------------------
يوجد برنامج نصي bash واحد في Emissary يقوم بتشغيل كل شيء. إنه موجود في دليل المبعوث ذي المستوى الأعلى. يقوم البرنامج النصي بتشغيل فئة emissary.Emissary التي تحتوي على العديد من أوامر Picocli المتاحة للتعامل مع وظائف مختلفة.
إذا تم تشغيل البرنامج النصي للمبعوث بدون أي وسيطات، فستحصل على قائمة بجميع أوامر التكوين الفرعية ووصفًا مختصرًا.
./emissary
تشغيل ./emissary help
سيعطيك نفس النتيجة مثل التشغيل بدون وسيطات. إذا كنت تريد الاطلاع على معلومات أكثر تفصيلاً حول أحد الأوامر، أضف اسم الأمر بعد المساعدة. على سبيل المثال، راجع جميع الوسيطات مع أوصاف أمر الخادم ، قم بتشغيل:
./emissary help server
تحتوي بقية الأوامر على وسيطات (-b أو --projectBase) يمكن تعيينها، ولكن يجب أن تتطابق مع PROJECT_BASE.
تم تعيين دليل التكوين افتراضيًا على /config ولكن يمكن أيضًا تمريره باستخدام (-c أو --config) . عند التشغيل من git checkout، يجب عليك استخدام الهدف باعتباره ProjectBase. لا تتردد في تعديل ملفات التكوين في الهدف/التكوين قبل البدء.
يتم التعامل مع التسجيل عن طريق تسجيل العودة. يمكنك الإشارة إلى ملف مخصص باستخدام الوسيطة --logbackConfig .
راجع التعليمات -c لكل أمر للحصول على مزيد من المعلومات.
سيعمل هذا الأمر على تشغيل خادم Emissary وتهيئة جميع الأماكن ومكان الالتقاط وعوامل التصفية التي تم تكوينها. سيبدأ في الوضع المستقل إذا لم يتم تحديد -m أو --mode . افتراضيًا، يتم حساب عدد MobileAgents بناءً على مواصفات الجهاز. على أجهزة الكمبيوتر الحديثة، يمكن أن يكون هذا مرتفعا. يمكنك التحكم في عدد الوكلاء باستخدام -a أو --agents . هنا مثال على التشغيل.
./emissary server -a 2
بدون مزيد من التكوين، سيبدأ على http://localhost:8001. إذا قمت بالتصفح للوصول إلى عنوان url هذا، فستحتاج إلى إدخال اسم المستخدم وكلمة المرور المحددين في target/config/jetty-users.properties، وهما emmissary وemissary123.
تم تكوين PickUpPlace الافتراضي لقراءة الملفات من target/data/InputData . إذا قمت بنسخ الملفات إلى هذا الدليل، سترى أن المبعوث يقوم بمعالجتها. ضع في اعتبارك أنه تم تكوين toUpper وtoLower فقط، وبالتالي فإن الإخراج لن يكون مثيرًا للاهتمام.
يعرض أمر الوكلاء عدد MobileAgents للمضيف الذي تم تكوينه وما يفعله هؤلاء الوكلاء. افتراضيًا، المنفذ هو 9001، لكن يمكنك استخدام -p أو --port لتغيير ذلك.
بافتراض أنك تعمل على 8001 من أمر الخادم أعلاه، حاول:
./emissary agents -p 8001
التجمع عبارة عن عرض مطوي لوكلاء العقدة. إنه أيضًا افتراضيًا على المنفذ 9001. للتشغيل للخادم المستقل الذي تم تشغيله أعلاه
./emissary pool -p 8001
يعد هذا الأمر أكثر فائدة للمجموعة لأنه يوفر طريقة عرض أكثر قابلية للهضم لكل عقدة.
يتطلب الأمر Env تشغيل الخادم. سيطلب من الخادم بعض قيم التكوين، مثل PROJECT_BASE وBIN_DIR. بدون أي وسيطات، سيتم التخلص من استجابة json غير منسقة.
./emissary env
ولكن يمكنك أيضًا تفريغ استجابة مناسبة للمصادر في bash.
./emissary env --bashable
يؤدي بدء تشغيل خادم Emissary في الواقع إلى استدعاء نقطة النهاية هذه وتفريغ $PROJECT_BASE}/env.sh بالمتغيرات التي تم تكوينها. يتم ذلك حتى تتمكن البرامج النصية لـ Shell من source $PROJECT_BASE}/env.sh
ومن ثم إتاحة هذا المتغير دون الحاجة إلى القلق بشأن تكوينها في مكان آخر.
يتيح لك أمر التكوين رؤية التكوين الفعال لمكان/خدمة/فئة محددة. نظرًا لأن Emissary يستخدم النكهات، فسيُظهر هذا الأمر التكوين الناتج للفئة بعد تطبيق جميع النكهات. يمكن استخدام هذا الأمر للاتصال بعقدة Emissary قيد التشغيل عن طريق تحديد -h
للمضيف (الافتراضي هو localhost) و -p
للمنفذ (الافتراضي هو 8001). للاتصال بمبعوث يعمل محليًا على المنفذ 8001، سيعمل أي من الأوامر التالية:
./emissary config --place emissary.place.sample.ToLowerPlace ./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001
اختياريًا، يمكنك تحديد وضع عدم الاتصال باستخدام --offline
لاستخدام ملفات التكوين المحددة في CONFIG_DIR المحلي:
./emissary config --place emissary.place.sample.ToLowerPlace --offline
في وضع عدم الاتصال، يمكنك تقديم النكهات لمعرفة الاختلافات في التكوينات:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING
هذه مفيدة لرؤية التكوين الفعال، ولكن يمكننا أيضًا تشغيلها في الوضع المطول لرؤية جميع ملفات التكوين بالإضافة إلى الإخراج النهائي. يتم التحكم في ذلك باستخدام العلامة --detailed
:
./emissary config --place emissary.place.sample.ToLowerPlace --detailed
أو في وضع غير متصل بالشبكة:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed
يعد Emissary أمرًا ممتعًا بشكل مستقل، لكن تشغيل المجموعة أكثر ملاءمة للعمل الحقيقي. تشبه طريقة التشغيل المجمعة الطريقة المستقلة، لكنك تحتاج إلى مجموعة -m لإخبار العقدة بالاتصال بالعقد الأخرى. في الوضع المجمع، سيبدأ Emissary أيضًا في تشغيل PickUpClient بدلاً من PickUpPlace، لذلك ستحتاج إلى بدء تشغيل وحدة التغذية.
انظر إلى target/config/peers.cfg لرؤية الأقران الملتقى. في هذه الحالة، هناك 3. العقد التي تعمل على المنفذ 8001 و9001 هي مجرد عقد مرسلة. العقدة التي تعمل على 7001 هي وحدة التغذية. لذلك دعونا نبدأ تشغيل 8001 و 9001 في محطتين مختلفتين.
./emissary server -a 2 -m cluster ./emissary server -a 2 -m cluster -p 9001
ونظرًا لأن جميع هذه العقد تعرف عن المنافذ 8001 و9001 و7001، فسترى أخطاء في السجلات أثناء استمرارها في محاولة الاتصال.
لاحظ أنه في عمليات النشر في العالم الحقيقي، لا نقوم بتشغيل عمليات إرسال متعددة على نفس العقدة. يمكنك تكوين اسم المضيف باستخدام -h .
مع بدء العقد على المنفذ 8001 و9001، نحتاج إلى بدء وحدة التغذية. يستخدم أمر التغذية المنفذ 7001 بشكل افتراضي، ولكننا نحتاج إلى إعداد دليل ستقرأ منه وحدة التغذية. ستكون الملفات التي تم إسقاطها في هذا الدليل متاحة للعقد العاملة ويجب توزيع العمل بين المجموعة. ابدأ التغذية باستخدام
mkdir ~/Desktop/feed1 ./emissary feed -i ~/Desktop/feed1/
يجب أن تكون قادرًا على الضغط على http://localhost:8001 وhttp://localhost:9001 وhttp://localhost:7001 في المتصفح وإلقاء نظرة على الأماكن التي تم تكوينها. قم بإسقاط بعض الملفات في ~/Desktop/feed1 وشاهد العقدتين تقومان بمعالجتها. قد يستغرق الأمر دقيقة واحدة لبدء المعالجة
يعرض الوكلاء في الوضع المجمع مرة أخرى تفاصيل حول mobileAgents. يبدأ بالعقدة التي قمت بتكوينها (المضيف المحلي: 9001 افتراضيًا)، ثم يتصل بجميع العقد التي يعرفها ويحصل على نفس المعلومات. تشغيله مع:
./emissary agents --cluster
يقوم التجمع في الوضع المجمع أيضًا بنفس عمل التجمع المستقل. يبدأ من العقدة (locahost:9001) افتراضيًا ثم ينتقل إلى جميع العقد التي يعرفها ويجمع عرضًا مطويًا للمجموعة. تشغيله مع
./emissary pool --cluster
تتحدث الهيكلية إلى العقدة التي تم تكوينها (المضيف المحلي: 8001 افتراضيًا) وتتحدث إلى كل عقدة تعرفها. الاستجابة هي ما تعرفه كل تلك العقد، حتى تتمكن من بناء هيكل شبكة لمجموعتك. تشغيله مع
./emissary topology
توجد كلمة مرور keystore وkeystore في ملف emissary.client.EmissaryClient-SSL.cfg. يتم تضمين وتكوين نموذج لمخزن المفاتيح افتراضيًا يمكنك استخدامه لاختبار هذه الوظيفة. لا نوصي باستخدام نموذج مخزن المفاتيح في بيئات الإنتاج. لاستخدام مخزن المفاتيح الخاص بك، قم بتغيير قيم التكوين في ملف emissary.client.EmissaryClient-SSL.cfg.
مستقل
./emissary server -p 8443 --ssl --disableSniHostCheck
متجمعة
./emissary server -p 8443 --ssl --disableSniHostCheck --mode cluster ./emissary server -p 9443 --ssl --disableSniHostCheck --mode cluster mkdir ~/Desktop/feed1 ./emissary feed -p 7443 --ssl --disableSniHostCheck -i ~/Desktop/feed1/
إذا كان لديك أي أسئلة أو استفسارات حول هذا المشروع، يمكنك الاتصال بنا على: [email protected]
بالنسبة للأسئلة الأمنية والإبلاغ عن الثغرات الأمنية، يرجى الرجوع إلى SECURITY.md