محرك جوجل التطبيق - اعتبارات التصميم حول المهام كرون

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

سؤال

وأنا تطوير البرمجيات باستخدام محرك التطبيقات جوجل.

ولدي بعض الاعتبارات حول التصميم الأمثل فيما يتعلق بالمسألة التالية: أحتاج إلى إنشاء وحفظ لقطات من بعض الكيانات على فترات منتظمة

.

وفي العالم ديسيبل العلائقية التقليدية، وأود أن خلق فرص عمل ديسيبل التي من شأنها أن إدراج المحاضر الموجزة جديدة.

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

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

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

المحلول

هل تعتبر باستخدام المعهد بعد بدلا من ذلك؟ بهذه الطريقة يمكن الحصول على قذيفة إلى مخزن البيانات الخاص بك وتجنب مهلة. الطبقة مخطط يظهروا في هذا الرابط مفيد جدا ولقد استعملت بنجاح لتنفيذ عمليات دفعة على ~ 1500 الكائنات.

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

نصائح أخرى

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

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

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

للحصول على لقطة لمدة ساعة معينة، ببساطة الاستعلام عن أقدم قطة أحدث من الفترة المطلوبة. اضاف باعتبارها مكافأة، حيث أنها لا snapshotted السجلات غير النشطة، وكنت توفير الكثير من الفضاء أيضا.

وأود أن استخدام مزيج من مهام كرون ورابط حلقات جلب طريقة مفصلة هنا: HTTP: // stage.vambenepe.com/archives/549 . وبهذه الطريقة يمكنك التقاط مهلة الخاص بك والبدء في طلب آخر.

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

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