كيف CCR DSS ونموذج أدوات مقارنة لتطويره وconcurency مناهج أخرى؟

StackOverflow https://stackoverflow.com/questions/815959

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا مهتم للمقارنة بين الطرق المختلفة لتطويره والتزامن بما في ذلك CCR ونموذج إطار DSS. وأود أن تكون مهتمة خصوصا مع المقارنة مع Hadoop وإرلانج أسلوب concurency

هل كانت مفيدة؟

المحلول

ولقد بحثت في CCR، DSS وإرلانج، على الرغم من هذه، وأنا قد شحنت CCR فقط إلى رمز الإنتاج الكبير. لقد بدا أبدا في Hadoop.

والتزامن إرلانج مستمد من تنفيذها للنموذج ممثل. كل "عملية" لديه علبة بريد واسترداد الرسائل من ذلك، في وقت واحد. عملية مع أية رسائل للتعامل مع كتل لا موضوع. على العكس من ذلك، يعالج مع العمل ومن المقرر عبر وحدة المعالجة المركزية المتوفرة مع أي من الآلات الأساسية تتعرض للقيام به. بالإضافة إلى ذلك، تتواصل عمليات عبر الرسالة التي تمر إما استنساخ / ثبات ضمان P1 و P2 أبدا مشاركة منطقيا الرسائل التي تمر بينهما.

وشعوري هو أنه طبيعة عدم عرقلة من رسالة ارسال واستقبال أن يعطي إرلانج سمعتها لتطويره على (ربما متعددة النوى) جهاز واحد. أساسا، بمعالجة مع العمل ومن المقرر بكفاءة عبر الموارد المتاحة والعمليات هادئة تستهلك شيئا ولكن الذاكرة للقيام به. من خلال تجهيز رسالة واحدة في وقت واحد، كل استقرار رسالة ضمان، المطور لم يعد لديه ما يدعو للقلق حول أشياء مثل "سباق الظروف".

وCCR عبارة عن مجموعة من الأوليات رسالة عابرة غير متزامن على مستوى منخفض. واحدة من أبسط منها هو أن يحصلوا على أن يفعل تلقي على غرار إرلانج. ولكن هناك البدائيون أكثر تطورا، مثل تاريخ (تلقي رسالة عن بعض قنوات) واختيار (استلمت رسالة من أي من بعض القنوات)، والتي يمكن أن تتداخل وتتكون بطرق مثيرة للاهتمام. هذه الأوليات هي أيضا غير مؤمن. استقبال تولد المهام (للتعامل مع الرسائل) في طوابير مهمة 1..n، والتي يتم الوصول إليها عن طريق عدد صغير من المواضيع.

وتخميني هو أن، تجاهل (مهم!) منصة الاختلافات، إجراءات مهمة جدولة الأساسية لكل هي في الأساس في نفس الكرة الحديقة. ومع ذلك، إرلانج هي لغة ومنبرا مع (ممثل) نموذج ثابت خبز فيها وCCR هو أيا من هذه الأشياء، لمجرد مكتبة ويمكنك استخدام / الاعتداء عليه بحرية أكبر.

وDSS <م> هو نموذج البرمجة، الذي يبني على CCR. لديها خدمات (إرلانج = العمليات)، فإنه يفوض رسالة غير متزامن اجتياز (مع الاستنساخ الكامل افتراضيا)، والشكل الوحيد من أشكال الاتصال بين الخدمة، وفقط التعامل مع العالم الخارجي له إلى الخدمة في URI (إرلانج = PID) . مثل إرلانج، هناك أساسا لا فرق بين استدعاء خدمة محلية واحدة بعد، على الرغم من أن (دي) التسلسل يحدث في الحالة الأخيرة.

لقد DSS أيضا نموذج مريحة، وهذا يعني أن الخدمات عادة تعرض مجموعة ثابتة ومشتركة من العمليات، وأن حالة الخدمة ينبغي النظر مورد التلاعب بها من قبل هذه العمليات. على النقيض من ذلك مع إرلانج، حيث يمكن إرسال رسائل عشوائية لعملية. يمكن لخدمات مفاجآت صيف دبي استخدام مجموعة كاملة من الأوليات CCR في الحديث إلى خدمات أخرى، والتي يمكن أن تكون مفيدة جدا لأشياء مثل توزيع مبعثر جمع العمليات.

وأخيرا، DSS هي مجرد إطار مع دعم المكتبات، وليس اللغة أو VM، حتى لا يكون هناك أكثر من ذلك بكثير "حفل" تشارك في الكتابة حتى خدمة DSS واحدة بدلا من كتابة عملية إرلانج.

في شروط التزامن، عن تقديم الأوليات المطلوبة لكتابة التعليمات البرمجية التي هي آمنة وفعالة تحت مواضيع متعددة من التنفيذ، دون الحاجة إلى القلق حول تلك المواضيع من التنفيذ. أعتقد أن هذا حيث يريد معظم المطورين أن يتحرك.

في شروط قابلية، وهذا هو أصعب واحدة للرد في هذا الكثير عن تصميم النظام كما هو الأدوات المستخدمة. هل تعني قابلية على عقدة واحدة، أي عند إضافة النوى، أو عند إضافة العقد؟ CCR ليس لديه ما يقوله عن هذا الأخير. كلا DSS والدعم إرلانج صيغ ثنائية فعالة إلى حد ما لنقل سلك. DSS يرث رأيها في العالم موجهة الموارد مباشرة من المتشعب، التي ينبغي أن أقول لك شيئا عن لها <م> المحتملة التدرجية، ولكنه لا يفعل ذلك في بعض القيود في البرنامجمينغ نموذج.

وزوجان من النقاط الفنية. خدمة DSS واحدة تستهلك المزيد من الذاكرة (~ 2K) من عملية إرلانج واحدة (300-400 بايت). أيضا، كل خدمة DSS يحصل طابور المهمة الخاصة به وليس هناك حد أعلى (~ 10000) على عدد من المهام قوائم الانتظار التي يمكن معالجتها بكفاءة من قبل CCR. ليس لدي أرقام على أي من هذه الحدود العليا للإرلانج لكن أظن أنه قد يكون أعلى من ذلك.

وبعد كل هذا، إذا كنت على منصة الصافي كنت تقوم به لمصلحة لنفسك من خلال إلقاء نظرة جدية على CCR. لقد وجدت أن تكون قوية جدا، خاصة بالنسبة للبرامج يحركها حدث رد الفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top