سؤال

حسنا، أعتقد أن لدي شك أساسي للغاية هنا:

أقوم بتطوير تطبيق على GAE (Java) وأداء استعلام إلى Datastore الذي يعيد الكثير من الكيانات، لذلك أحتاج إلى التخزين المؤقت عليه. كنت أستخدم MECCACHACHER وكان يعمل بشكل رائع، ولكن إذا احتفظت بقائمة الكيانات في متغير ثابت، فإن الطلب بأكمله يذهب مرتين بسرعة أكبر من استخدام MEMCACHE. أعتقد أن ذلك لأنني لا ألغى الكيانات طوال الوقت.

ماذا سيكون عيب باستخدام متغير ثابت بدلا من memcache؟ لا أعرف إذا كان هناك العديد من مثيلات طلبي في السحابة، وبالتالي العديد من مثيلات المتغير الثابت الخاص بي؟

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

شكرا للمساعدة!

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

المحلول

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

تذكر أن لديك قائمة من المشاركات وتختار 5 عشوائيا 5 لإظهار للمستخدمين. هل يهم إذا كان هناك مستخدمان مختلفان يرون مجموعة مختلفة من 5؟ إذا كنت تختار أحكام عشوائية على أي حال، فربما لا يهم. ثم يمكنك تخزين القائمة الكاملة للوظائف في memcache، وسحب 5 منها عشوائية من Memcache وتخزينها في متغير ثابت.

ثانيا، ما هو بالضبط أنت memcaching، وكيف تسحبها؟ هل تخزن مجموعة كاملة من المشاركات كاملة في Memcache، والحصول عليها جميعا، ثم اختيار 5؟ ربما يمكنك فقط تنزيل قائمة الوظائف، اختر 5، ويحصل فقط على 5 تحتاج؟ إذا كنت تعتقد أنه التحيزي الذي تبطئك، فقد يساعد ذلك. هل تقوم بأي معالجة على المشاركات بعد الحصول عليها؟ إذا كان الأمر كذلك، هل يمكن تخزين نتائج تلك المعالجة مؤقتا؟

نصائح أخرى

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

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

لن أحاول أيضا الخروج باستخدام استخدام الذاكرة هناك، يجب أن يكون هناك حصة على مقدار الذاكرة التي يمكنك استخدامها.

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

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