[ ابدأ | المميزات | حالات الاستخدام | عينات | سجل التغيير / ما الجديد / الإصدارات | مجموعة المستخدمين | الدافع | العروض التوضيحية | الأداء | قارن | المساهمون | حول | الأخبار | البرنامج المساعد | 中文介绍 ]
[ نظرة عامة على واجهة برمجة التطبيقات | إنشاء وإرسال المهمة | تتبع الحالة وفحص الردود | التكوينات ]
تم التغريد بواسطة منشئ Akka وتم عرضه في [ هذا الأسبوع في #Scala | OSChina - أفضل 100 شركة في عام 2015 ]
Parallec عبارة عن مكتبة جافا عميل HTTP(S)/SSH/TCP/UDP/Ping غير متزامنة سريعة ومبنية على Akka. يمكنك تجميع استجابات واجهة برمجة التطبيقات (API) والتعامل معها بشكل قابل للتطوير على أي حال وإرسالها إلى أي مكان عن طريق كتابة 20 سطرًا من التعليمات البرمجية. يتيح لك سياق الاستجابة المريح للغاية إدخال/إخراج أي كائن عند التعامل مع الاستجابات. يمكنك الآن إجراء مكالمات API قابلة للتطوير، ثم تمرير البيانات المجمعة في أي مكان دون عناء إلى البحث المرن، وkafka، وMongoDB، والجرافيت، وmemcached، وما إلى ذلك. تحكم مرن في التزامن على مستوى المهمة دون إنشاء مجموعة سلاسل رسائل مكونة من 1000 خيط. Parallec تعني Paralle l C lient (تُنطق بـ "Para-like"). قم بزيارة www.parallec.io
شاهد العرض التوضيحي : تجميع استجابة HTTP لخادم الويب لـ 8000 إلى الذاكرة في 12 ثانية / إلى ElasticSearch في 16 ثانية.
رسائل الخطأ المجمعة - تصحيح الأخطاء مع الرؤية الكاملة : هل تواجه مشكلة في تصحيح الأخطاء في البيئة المتزامنة؟ ليس بعد الآن! يتم التقاط كافة الاستثناءات والمهلة وتتبعات المكدس والطلبات المرسلة ووقت الاستجابة المستلمة وتجميعها في خريطة الاستجابة. وهو متوفر في ParallelTask للاستقصاء مباشرة بعد تنفيذ المهمة بشكل غير متزامن. تضمن المهلة متعددة المستويات (العامل/المدير) عودة المهام حتى بالنسبة لـ 100000 طلب.
حالات استخدام الإنتاج : تستخدم على نطاق واسع في برامج البنية التحتية كمحرك الاقتراع والتجميع
قم بتنزيل أحدث إصدار من JAR أو احصل عليه من Maven:
< dependency >
< groupId >io.parallec</ groupId >
< artifactId >parallec-core</ artifactId >
< version >0.10.6</ version >
</ dependency >
تتوفر لقطات من إصدار التطوير في مستودع snapshots
Sonatype.
أو جرادل:
compile 'io.parallec:parallec-core:0.10.6'
6 خط مثال
في المثال أدناه، مجرد تغيير PreparHttpGet() إلى PreparSsh() و preparTcp() و preparUdp() و preparPing() يمكّنك من إجراء SSH/TCP/Ping بشكل متوازي. التفاصيل يرجى الرجوع إلى Java Doc ومثال التعليمات البرمجية.
import io . parallec . core .*;
import java . util . Map ;
ParallelClient pc = new ParallelClient ();
pc . prepareHttpGet ( "" ). setTargetHostsFromString ( "www.google.com www.ebay.com www.yahoo.com" )
. execute ( new ParallecResponseHandler () {
public void onCompleted ( ResponseOnSingleTask res ,
Map < String , Object > responseContext ) {
System . out . println ( res . toString () ); }
});
20 سطر مثال
الآن بعد أن تعلمت الأساسيات، تحقق من مدى سهولة تمرير عميل بحث مرن باستخدام سياق الاستجابة المناسب لتجميع البيانات في أي مكان تريده. يمكنك أيضًا تمرير خريطة تجزئة إلى responseContext
، وحفظ النتائج التي تمت معالجتها على الخريطة أثناء onCompleted
، واستخدام الخريطة في الخارج لمزيد من العمل.
...
import org . elasticsearch . client . Client ;
import static org . elasticsearch . node . NodeBuilder .*;
ParallelClient pc = new ParallelClient ();
org . elasticsearch . node . Node node = nodeBuilder (). node (); //elastic client initialize
HashMap < String , Object > responseContext = new HashMap < String , Object >();
responseContext . put ( "Client" , node . client ());
pc . prepareHttpGet ( "" )
. setConcurrency ( 1000 ). setResponseContext ( responseContext )
. setTargetHostsFromLineByLineText ( "http://www.parallec.io/userdata/sample_target_hosts_top100_old.txt" , HostsSourceType . URL )
. execute ( new ParallecResponseHandler () {
public void onCompleted ( ResponseOnSingleTask res ,
Map < String , Object > responseContext ) {
Map < String , Object > metricMap = new HashMap < String , Object >();
metricMap . put ( "StatusCode" , res . getStatusCode (). replaceAll ( " " , "_" ));
metricMap . put ( "LastUpdated" , PcDateUtils . getNowDateTimeStrStandard ());
metricMap . put ( "NodeGroupType" , "Web100" );
Client client = ( Client ) responseContext . get ( "Client" );
client . prepareIndex ( "local" , "parallec" , res . getHost ()). setSource ( metricMap ). execute ();
}
});
node . close (); pc . releaseExternalResources ();
طلبات مختلفة لنفس الهدف
انظر الآن إلى مدى سهولة استخدام قالب الطلب لإرسال عدة طلبات مختلفة إلى نفس الهدف. يُسمح بالاستبدال المتغير في نص النشر وعنوان URL والرؤوس. اقرأ المزيد..
pc . prepareHttpGet ( "/userdata/sample_weather_$ZIP.txt" )
. setReplaceVarMapToSingleTargetSingleVar ( "ZIP" ,
Arrays . asList ( "95037" , "48824" ), "www.parallec.io" )
. execute ( new ParallecResponseHandler () {...}...
مزيد من التفاصيل يرجى مراجعة سجل التغيير.
0.10.x
، حيث نستخدمه في الإنتاج.async-http-client
(يستخدم حاليًا AHC الإصدار 2.0.15
) هو 0.20.0-SNAPSHOT
. لقد اجتاز هذا الإصدار اختبارات الوحدة الشاملة ولكن لم يتم استخدامه بعد في الإنتاج. يتطلب هذا الإصدار JDK8 نظرًا لـ AHC 2.x ويمكن استخدامه مع المكونات الإضافية المتوازية بنفس الإصدار 0.20.0-SNAPSHOT
، التفاصيل يرجى التحقق من رقم 37.تم بناء Parallec على ممثلين Akka و Async HTTP Client / Netty / Jsch. تركز المكتبة على HTTP بينما تتيح أيضًا الاتصال القابل للتطوير عبر SSH/Ping/TCP.
تضمن لك تغطية الاختبار بنسبة 90%+ العثور دائمًا على مثال لكل ميزة.
بفضل التعليقات والدروس والتحسينات التي تم إجراؤها خلال العام الماضي من الاستخدام الداخلي والمصدر المفتوح لـ REST Commander ، أصبحنا الآن نواة REST Commander كمكتبة مستقلة سهلة الاستخدام. أضفنا أكثر من 15 ميزة جديدة ، وأعدنا كتابة ما يزيد عن 70% من التعليمات البرمجية، مع تغطية اختبارية تزيد عن 90% للاستخدام والمساهمة الموثوقة. هذه المرة قمنا أيضًا بهيكلتها بشكل أفضل بحيث يمكن إجراء معظم التطوير الداخلي هنا مباشرة.
[ شاهد العرض التوضيحي ](https://www.youtube.com/watch?v=QcavegPMDms"عرض Parallec - انقر للمشاهدة!"): يقوم Parallec بتجميع حالة 100 موقع ويب للبحث المرن وتصورها باستخدام 20 سطرًا من التعليمات البرمجية.
شاهد العرض التوضيحي حول مكالمات HTTP على 8000 خادم : تجميع استجابة HTTP لخادم الويب لـ 8000 إلى الذاكرة في 12 ثانية / إلى ElasticSearch في 16 ثانية.
[ شاهد عرض Ping التجريبي ](https://www.youtube.com/watch?v=9m1TFuO1Mys"عرض Parallec Ping vs FPing - انقر للمشاهدة!"): Parallec عبارة عن سرعة مضاعفة لـ FPing المضبوط بأفضل جهد مع نفس النتائج الدقيقة و تنفيذ الأمر pings على 8000 خادم خلال 11.1 ثانية، التفاصيل تحقق هنا.
لاحظ أن السرعة تختلف بناءً على سرعة الشبكة، ووقت استجابة واجهة برمجة التطبيقات (API)، وأبطأ الخوادم، والمهلة، وإعدادات التزامن.
أجرينا واجهة برمجة تطبيقات لتنفيذ المهام عن بُعد على 3000 خادم مع استجابة مجمعة للبحث المرن، والتي تم تصورها في غضون 15 ثانية، من خلال كتابة 25 سطرًا من التعليمات البرمجية.
باستخدام واجهة برمجة تطبيقات أخرى أسرع، يمكنك الاتصال بـ 8000 خادم في نفس مركز البيانات مع تجميع الاستجابة في الذاكرة خلال 12 ثانية.
Parallec 2.2 ثانية مقابل FPing 4.5 ثانية على 1500 خادم. Parallec هي سرعة FPing مضاعفة (بعد الضبط بأفضل جهد: -i 1 -r 0 v3.12) لإجراء اختبار ping على 1500 خادم مع الحصول على نفس نتائج ping. يقوم Parallec بإجراء اختبار الاتصال لـ 8000 خادم خلال 11.1 ثانية بسهولة.
كالعادة، لا تعتمد على هذه الأرقام وقم بإجراء معاييرك الخاصة.
في Parallec، يمكنك التعامل مع الاستجابة إما في العامل (قبل التجميع: بالتوازي) أو في المدير (بعد التجميع: خيط واحد). اقرأ المزيد..
لمزيد من مراجعة الأعمال ذات الصلة، يرجى زيارة هنا.
سمات | باراليك | قائد الراحة | تجمعات المواضيع + عميل غير متزامن |
---|---|---|---|
مكتبة مضمنة مع واجهة نمط منشئ بديهية | |||
تطبيق جاهز للاستخدام مع تقديم الطلب وتجميع الاستجابة بناءً على معالج واجهة المستخدم الرسومية | |||
تحكم بسيط في التزامن لا يقتصر على حجم الخيط | |||
معالج الاستجابة الفورية دون انتظار إرجاع كافة الاستجابة | |||
جدولة المهام المدركة للقدرات والتحكم في القدرات العالمية | |||
الحرية الكاملة لمعالجة الاستجابة وتجميع واجهة برمجة التطبيقات: معالج الاستجابة العام القابل للتوصيل وسياق الاستجابة | |||
مكون إضافي مكون من سطر واحد لتمكين مصادقة عميل SSL | |||
تغطية الاختبار 90% | |||
قم بتحميل المضيفين المستهدفين من استعلام CMS، ومسار JSON، والنص، والقائمة، والسلسلة من URL/المحلي | |||
التزامن والتنسيق على مستوى المهمة لواجهات برمجة التطبيقات غير المتزامنة: تقدم مهمة الاستقصاء التلقائي | |||
تكوين مستوى المهمة عند انتهاء المهلة واستبدال Async HTTP Client | |||
التحكم في المهام غير المتزامنة والمزامنة مع استطلاع التقدم والإلغاء | |||
SSH متوازي قابل للتطوير مع كلمة مرور وتسجيل دخول يعتمد على المفتاح | |||
قابلية التوسع والسرعة المثبتة على أكثر من 100000 مضيف مستهدف في بيئة الإنتاج | |||
قالب طلب عام مع استبدال متغير لإرسال طلبات مختلفة إلى نفس المضيفين المستهدفين/المختلفين | |||
Ping قابل للتطوير مع إعادة المحاولة | |||
TCP/UDP قابل للتوسيع مع انتهاء مهلة الخمول | |||
موقع معالج مرن إما في العامل (بالتوازي) أو في مؤشر ترابط المدير | |||
تجميع الاستجابة على مستويين خارج الصندوق على رمز الحالة | |||
تشذيب سجل الاستجابة القابل للتكوين على فترات | |||
إلغاء المهمة على قائمة المضيفين المستهدفين |
ونحن نشكر بشدة جميع المساهمين على جهودهم.
يتم تقديم Parallec لك بواسطة Yuanteng (Jeff) Pei وTeng Song، Cloud Infrastructure & Platform Services (CIPS) في eBay Inc. (المؤلفون الأصليون)
الكود مرخص بموجب ترخيص Apache v2.0
© 2015-2017 مؤسسة إيباي للبرمجيات