هل يمكنني استخدام Terracotta لتوسيع نطاق تطبيق يستخدم ذاكرة الوصول العشوائي (RAM) بكثافة؟

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

سؤال

أقوم بتقييم Terracotta لمساعدتي في توسيع نطاق تطبيق مقيد حاليًا بذاكرة الوصول العشوائي (RAM).إنه مرشح تعاوني ويخزن حوالي 2 كيلو بايت من البيانات لكل مستخدم.أرغب في استخدام Amazon's EC2، مما يعني أنني مقيد بـ 14 جيجابايت من ذاكرة الوصول العشوائي (RAM)، مما يمنحني حدًا أعلى فعالًا لكل خادم يبلغ حوالي 7 ملايين مستخدم.أحتاج إلى أن أكون قادرًا على التوسع إلى ما هو أبعد من هذا.

بناءً على قراءتي حتى الآن، أعتقد أن Terracotta يمكن أن يحتوي على كومة مجمعة أكبر من ذاكرة الوصول العشوائي المتوفرة على كل خادم.هل سيكون من الممكن الحصول على كومة مجمعة فعالة بسعة 30 جيجابايت أو أكثر، حيث يدعم كل خادم 14 جيجابايت فقط؟

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

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

المحلول

أود أن أقول أن الإجابة هي نعم مؤهلة لهذا.يسمح لك Terracotta بالعمل مع أكوام مجمعة أكبر من حجم JVM واحد على الرغم من أن هذه ليست حالة الاستخدام الأكثر شيوعًا.

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

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

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

من وجهة نظر الأرقام، من الممكن فهرسة 30 جيجابايت من البيانات، لذلك هذا ليس قريبًا من أي حد صارم.

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