طوابير - ما هو ، لماذا وكيف استخدامها؟ ألق نظرة على ميزات AWS SQS


أولاً ، دعونا نحدد مفهوم "قائمة الانتظار".


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

بعد ذلك ، عليك أن تقرر لماذا هناك حاجة على الإطلاق؟


1. للعمليات المؤجلة. والمثال الكلاسيكي هو معالجة الصور. على سبيل المثال ، قام المستخدم بتحميل صورة إلى الموقع نحتاج إلى معالجتها ، فهذه العملية تستغرق الكثير من الوقت ، ولا يريد المستخدم الانتظار كثيرًا. لذلك ، نقوم بتحميل الصورة ، ثم نقلها إلى قائمة الانتظار. وسيتم معالجتها عندما يحصل عليها أي "عامل".

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

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

الآن دعونا نلقي نظرة على المشاكل التي سنواجهها إذا أنشأنا قائمة الانتظار بأنفسنا:


1. الموازي الوصول. يستطيع معالج واحد فقط أخذ رسالة من قائمة انتظار. وهذا هو ، إذا طلبت خدمتان في الوقت نفسه رسائل ، يجب أن تُرجع كل منهما مجموعة فريدة من الرسائل. خلاف ذلك ، اتضح أن رسالة واحدة تتم معالجتها مرتين. ما يمكن أن يكون محفوفا.

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

3. آلية معالجة الأخطاء. دعنا نقول خدمتنا استغرق ثلاث رسائل من قائمة الانتظار. اثنان منها نجح في معالجتها عن طريق إرسال طلبات الإزالة من قائمة الانتظار. والثالث لم يستطع معالجته ومات. لا تتوفر رسالة في حالة المعالجة للخدمات الأخرى. ويجب أن لا تبقى إلى الأبد في حالة المعالجة. يجب أن يتم تمرير هذه الرسالة إلى معالج آخر بواسطة بعض المنطق. سيتم تطبيق مثال على تنفيذ هذا المنطق قريبًا باستخدام AWS SQS (خدمة قائمة انتظار بسيطة) كمثال.

خدمات الويب الأمازون - خدمة قائمة انتظار بسيطة


الآن دعونا نلقي نظرة على كيفية حل SQS لهذه المشكلات وما الذي يمكن أن تفعله.


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

shemka العمل الصغيرة.


إشعار: كن حذرا. SQS في بعض الحالات قد ترسل رسالة مكررة (البند "التسليم على الأقل مرة واحدة"). لذلك ، يجب أن تكون خدمتك عاجزة عن المعالجة.

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

3. إلغاء البيانات المكررة. SQS لديها أيضا نظام حماية مكررة. تحتوي كل رسالة على "معرف إلغاء البيانات المكررة" ، ولن تضع SQS قائمة انتظار في رسالة بها
تكرار "معرف إلغاء البيانات المكررة" لمدة 5 دقائق. يجب عليك تحديد "معرف إلغاء البيانات المكررة" في كل رسالة أو تمكين إنشاء معرّف يستند إلى المحتوى. هذا يعني أن التجزئة الناتجة على أساس المحتوى الخاص بك سوف تحصل على "معرف إلغاء البيانات المكررة". المعلمة "إلغاء البيانات المستندة إلى المحتوى". المزيد عن إلغاء البيانات المكررة
إشعار: كن حذرًا إذا أرسلت رسالتين متطابقتين في غضون 5 دقائق وكان لديك "إلغاء البيانات المكررة على أساس المحتوى" قيد التشغيل ، ولن تضيف SQS رسالة ثانية إلى قائمة الانتظار.
إشعار: كن حذرًا ، على سبيل المثال ، في حالة فقد الاتصال على الجهاز ولم يتلق استجابةً ثم أرسل طلبًا ثانيًا بعد 5 دقائق ، سيتم إنشاء نسخة مكررة.
4. استطلاع طويل. مسح طويل . يدعم SQS هذا النوع من الاتصال مع مهلة قصوى تصل إلى 20 ثانية. ما الذي يسمح لنا بحفظ حركة المرور و "الرجيج" في الخدمة.

5. القياسات. توفر أمازون أيضًا مقاييس قائمة انتظار مفصلة. مثل عدد الرسائل المستلمة / المرسلة / المحذوفة ، وحجم كيلوبايت من هذه الرسائل وما إلى ذلك. يمكنك أيضًا توصيل SQS بخدمة سجل CloudWatch. هناك يمكنك أن ترى أكثر من ذلك. هناك أيضًا يمكنك تكوين ما يسمى "الإنذارات" ويمكنك تكوين الإجراءات لأي أحداث. تعرف على المزيد حول الاتصال بـ SQS. و CloudWatch الوثائق

الآن دعونا نلقي نظرة على إعدادات قائمة الانتظار:


أهمها:


مهلة الرؤية الافتراضية - عدد الثواني / الدقائق / الساعات التي لن تكون الرسالة بعد الاستلام مرئية للاستلام. الحد الأقصى لوقت المعالجة هو 12 ساعة.

فترة الاحتفاظ بالرسائل - عدد الثواني / الدقائق / الساعات / الأيام ، مما يعني مدة تخزين الرسائل غير المجهزة في قائمة الانتظار. الحد الأقصى - 14 يومًا.

الحد الأقصى لحجم الرسالة - الحد الأقصى لحجم الرسالة بالكيلوبايت. القيمة هي من 1 كيلو بايت إلى 256 كيلو بايت.

تأخير التسليم - يمكنك ضبط وقت التأخير لتسليم رسالة إلى قائمة الانتظار. من 0 ثانية إلى 15 دقيقة (في الواقع ، ستكون الرسائل في قائمة الانتظار ، لكنها لن تكون مرئية لتلقيها).

تلقي وقت انتظار الرسائل - الوقت ، كم من الوقت سيستمر الاتصال في حالة استخدامنا "استطلاع طويل" لتلقي رسائل جديدة.

إلغاء البيانات المستندة إلى المحتوى - العلامة ، إذا تم ضبطها على "صحيح" ، فسيتم إضافة "معرف إلغاء البيانات المكررة" إلى كل رسالة في شكل تجزئة SHA-256 تم إنشاؤها من المحتوى.

قائمة انتظار القتلى


استخدم Redrive Policy - علامة ، إذا تم تعيينها ، فسيتم إعادة توجيه الرسائل بعد عدة محاولات.

قائمة انتظار الرسائل الميتة - اسم قائمة انتظار "الموتى" التي سيتم إرسال الرسائل الأولية إليها.

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

الآن قليلا عن الرسائل نفسها وخصائصها:


تحتوي الرسالة على العديد من المعلمات:

1. نص الرسالة - أي نص
2. معرف مجموعة الرسائل يشبه العلامة والقناة والمطلوبة لجميع الرسائل. ويضمن معالجة كل مجموعة في وضع FIFO.
3. رسالة Deduplication Id - سلسلة لتحديد التكرارات. إذا تم تعيين وضع "إلغاء البيانات المستندة إلى المحتوى" ، تكون المعلمة اختيارية.

هناك أيضا سمات الرسالة


تتكون السمات من الاسم والنوع والقيمة.

1. اسم - سلسلة
2. اكتب - هناك عدة أنواع: سلسلة ، رقم ، ثنائي. النوع يأتي ببساطة كسلسلة ، ومن الممكن إضافة postfix إلى النوع. في هذه الحالة ، سيأتي النوع مع هذا postfix خلال النقطة ، على سبيل المثال string.example_postfix
3. القيمة - سلسلة
إشعار: يرجى ملاحظة أن الحد الأقصى لعدد السمات هو 10 تفاصيل
ملاحظة: توفر هذه المقالة وصفًا موجزًا ​​لقائمة الانتظار ، بالإضافة إلى القليل عن إمكانات SQS وميكانيكا. سيتم تخصيص المقالة التالية لـ AWS Lambda ، ثم مشاركتها العملية.

Source: https://habr.com/ru/post/ar457068/


All Articles