سؤال

لنفترض أن لدي تطبيقًا مضمونًا للتغلب على خادم واحد حتى بعد التحسينات. هل هناك تقنية تسمح بتقسيم تطبيق الويب عبر خوادم متعددة مع الحفاظ على حالتها؟

خذ على سبيل المثال لعبة لاعب متعددة عبر الإنترنت. عادة في World of War Craft ، توجد خوادم متعددة مع وجود كل واحدة من حالة لعبة خاصة بها. ما أبحث عنه هو شيء من شأنه أن يسمح لمشاركة حالة اللعبة هذه بين الخادم المتعدد.

تحرير: لا يهم النظام الأساسي حقًا لأن هذا مخصص لتطبيق الويب ، وبالتالي فإن الواجهة الخلفية لا يهم كثيرًا. ومع ذلك ، فإن القضبان وجافا هي إمكانيات.

أيضا ، كان واو مجرد مثال ، أنا مهتم فقط بمثل هذه التكنولوجيا ؛ ستكون لعبة كبيرة تطبيقًا جيدًا لذلك.

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

المحلول

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

مشروع Darkstar قام بمحاولة رائعة في هذا الأمر على جانب الاستخدام والتعقيد ، ولكن وجد (مما لا يثير الدهشة) أنه لم يكن تحجيمًا.

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

تجدر الإشارة إلى أن مجال التطبيق الخاص بك ليس ألعابًا في الوقت الفعلي - فغالبًا ما لا تمانع إذا كنت تعمل مع بيانات قديمة ، طالما أن الأمر يصبح صحيحًا قريبًا بما فيه الكفاية. في مثل هذه الحالات ، تعد أنظمة التخزين المؤقت البسيطة مثل Memcache رائعة. وبالمثل ، إذا كنت بحاجة إلى مزيد من الصواب ولكن لا داعي للقلق بشأن الإنتاجية كثيرًا ، فقد يكون شيء مثل Hazelcast (المذكور في إجابة أخرى) رائعًا ، ولكن بالنسبة لمعظم الألعاب عبر الإنترنت التي تكون كبيرة بما يكفي لتتطلب موازنة التحميل "آلاف العمليات/ ثانية "ليست جيدة بما فيه الكفاية.

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

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

نصائح أخرى

القي نظرة على Hazelcast. إنه منصة توزيع بيانات مفتوحة المصدر ، قابلة للتطوير للغاية لـ Java. تقدم Hazelcast خريطة موزعة ، والتي سيتم مشاركتها بين أعضاء المجموعة. يمكنك بسهولة تخزين بياناتك فيه. إنه سهل للغاية في الاستخدام. فقط أضف hazelcast.jar إلى classpath الخاص بك. لا حاجة لتثبيت أي خادم.

أنا أستعمل Microsoft HPC, ، ليس للألعاب رغم ذلك. من السهل جدًا إعداده واستخدامه.

أنت لا تذكر منصتك. لجافا هناك التراكوتا

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