سؤال

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

لجعل توزيع محاكاة أخطط أن يكون 'منسق' (star topology).المشاركة المحاكاة ببساطة التسجيل و نتحدث فقط إلى المنسق.منسق ثم ينسق تنفيذ مختلف المهام بين كل محاكاة.

مثال سريع من مشكلة التوزيع ، عندما محاكاة واحد هو 'المسؤول' أشياء معينة, مثل الطريق.و آخر هو 'المسؤول' من الطرق الأخرى.إلا أن هذه الطرق المترابطة (وبالتالي ، نحن بحاجة إلى التزامن بين هذه المحاكاة تحتاج إلى أن تكون قادرة على تبادل البيانات / أساليب الاحتجاج عن بعد).

لدي نظرة على RMI و أنا أفكر أنه قد يكون من الأنسب لهذه المهمة.(مجردة من وجود لإنشاء أكثر من سلك يشير الانضباط).

هل هذا عاقل ؟ القضية هنا ، هو أن المحاكاة المشاركين تحتاج إلى تركيز بعض من تخزين البيانات في 'منسق لضمان صريحة التزامن بين المحاكاة.علاوة على ذلك, بعض المحاكاة قد تتطلب مكونات أو أساليب أخرى المحاكاة.(ومن هنا جاءت فكرة استخدام RMI).

بلدي النهج الأساسي هو أن يكون 'منسق' تشغيل عملاق RMI التسجيل.وكل محاكاة ببساطة يبدو كل شيء في التسجيل لضمان أن الصحيح الكائنات المستخدمة في كل خطوة.

أي شخص لديه أي نصائح متجهة إلى أسفل هذا الطريق ؟

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

المحلول

وأنت قد ترغب في التحقق من Hazelcast أيضا. Hazelcast هو المعاملات مفتوحة المصدر، وزعت / تنفيذ تقسيم قائمة الانتظار، الموضوع، خريطة، مجموعة، القائمة، قفل وخدمة المنفذ. فمن السهل فائقة للعمل مع. فقط إضافة hazelcast.jar إلى CLASSPATH الخاص بك والبدء في الترميز. لا يلزم تقريبا التكوين.

إذا كنت مهتما في تنفيذ Runnable والمهام استدعاء الخاص بك بطريقة توزيعها، ثم الرجاء تحقق من وثائق خدمة المنفذ الموزعة على الموقع http://code.google.com/docreader/#p=hazelcast

يتم تحريرها

Hazelcast تحت رخصة أباتشي ودعم المشاريع الصف هو متاح أيضا.

نصائح أخرى

هل هذا عاقل؟ IMHO لا. وانا اقول لكم لماذا. ولكن أولا سأضيف هذا العقد أن هذا هو موضوع معقد جدا لابد من ينظر إلى أي جواب على بالكاد خدش السطح.

أولا بدلا من تكرار نفسي وأنا أشير لك إلى <لأ href = "https://stackoverflow.com/questions/383920/what-is-the-best-library-for-java-to-grid- كتلة تمكين الخاص بك بين التطبيق / 383929 # 383929 "> ملخص من شبكة جافا / التقنيات العنقودية التي كتبت قبل لحظة. في قائمة معظمها كاملة.

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

وماذا كنت تريد حقا لهذا من المحتمل ان يكون الكتلة (بدلا من البيانات / حوسبة الشبكة) حل وأنا أقترح نظرتم <لأ href = "http://www.terracotta.org/" يختلط = " noreferrer نوفولو "> الطين . ومن الناحية المثالية لك سوف ننظر أوراكل بالاتساق ولكن مما لا شك فيه مكلفة ( مقارنة مجانا). ومن على الرغم من منتج رائع.

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

إذا كنت تبحث في نموذج أكثر وزعت ثم ربما يجب عليك أن تبحث في أكثر من نهج الخدمية القائمة.

وإلقاء نظرة على http://www.terracotta.org/

وعلى توزيع جافا VM، لذلك لديه ميزة كونها تتجمع التطبيق يبدو لا تختلف عن تطبيق جافا القياسية.

ولقد استخدمت في تطبيقات وسرعة مؤثرة جدا حتى الآن.

وبول

هل تعتبر باستخدام نهج الانتظار الرسالة؟ هل يمكن استخدام الدائرة للتواصل / تنسيق المهام والنتائج بين مجموعة من الخوادم / العقد. حتى انك تستطيع استخدام SQS الأمازون (بسيطة قائمة انتظار خدمة: aws.amazon.com/sqs). ولها الخوادم التي تعمل على EC2 للسماح لك لتوسيع نطاق صعودا وهبوطا كما هو مطلوب

و2 سنتا فقط بلدي.

ونلقي نظرة على جيني، قد يكون من بعض استخدام لكم.

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

وعن طريق Javaspaces سوف تضيف المزيد من مجموعة كبيرة التجريد إلى التطبيق الخاص بك أن استخدام عادي RMI (الذي يستخدم من قبل الإطار جيني داخليا الافتراضي "بروتوكول الأسلاك").

وإلقاء نظرة على هذا المقالة من الشمس لمدة مقدمة.

وكان Newmarch في جيني دروس هو مكان جيد للبدء في تعلم جيني

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

عند تشغيل وزعت نماذج المحاكاة في متوازية ومتزامنة ثم رأيت اثنين من الخيارات:

  • عند كل نموذج المحاكاة الخاصة محاكاة الساعة قائمة الحدث ثم هذه يجب أن تكون متزامنة عبر الشبكة.
  • بدلا من ذلك يمكن أن يكون هناك واحد محاكاة الساعة قائمة الأحداث التي سوف "القراد الوقت" لجميع توزيع (sub) نماذج.

الخيار الأول تم بحثها على نطاق واسع على مستوى عال العمارة (HLA) انظر على سبيل المثال http://en.wikipedia.org/wiki/IEEE_1516 كمطلقة.

لكن الخيار الثاني يبدو أكثر بساطة وأقل النفقات العامة إلي.

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

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