كيفية دمج وتخفيض مع ASP.NET الأساسية؟

الكاتب | تشو الصلب

ذبيان | تو مين

الصمامات، وتخفيض وAOP

1. ما هو الفتيل؟

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

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

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

  • فتح الصمامات

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

  • انتعاش الصمامات

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

2. ما هو خفضت

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

3. اوب

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

تنفيذ فتيل ASP.NET الأساسية وخفضه

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

دعونا شرح وظائف سبعة من بولي:

1. إعادة المحاولة

إعادة المحاولة فهم أفضل ضرورة تنفيذ بعض التعليمات البرمجية عند حدوث فشل، على النحو التالي:

 برنامج الدرجة { الرئيسي خالية ثابت (سلسلة وسائط) { محاولة { Policy.Handle < HttpRequestException > .Retry (5، ((استثناء، العد، السياق) = > { Console.WriteLine ($ "{عدد} 'إعادة المحاولة")؛ })) تنفيذ (GetUser)؛ } الصيد (استثناء ه) { Console.WriteLine ( "يتم طرح استثناء")؛ } Console.Read. } ثابت GetUser باطل { Console.WriteLine ( "البداية")؛ Thread.Sleep (1000)؛ رمي HttpRequestException جديدة. } }

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

2. الإنحدار

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

 Policy.Handle < أيا كان > .Fallback < المستخدم > (= >  User.SetPassword)

3. كسر

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

 Policy.Handle < HttpRequestException > .CircuitBreaker (10، TimeSpan.FromSeconds (5)، (استثناء، واتس) = > { Console.WriteLine ($ "نظام {exception.Message} {} ts.Seconds بعد إعادة المحاولة الثانية")؛ } = > { Console.WriteLine ( "إعادة التشغيل!")؛ }) تنفيذ (GetUser)؛

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

4. مهلة

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

 Policy.Timeout (20، (السياق، زمنية، مهمة) = > { Console.WriteLine ($ "{السياق} {} {زمنية مهمة}")؛ }) تنفيذ (GetUser)؛

على النحو المحدد أعلاه كود الانتظار وقتا أطول من 20 ثانية بعد وظيفة الزناد رد.

5. عزل

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

 Policy.Bulkhead (12 السياق = > { Console.WriteLine ( "كود رد") })؛

6. ذاكرة التخزين المؤقت

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

جمع 7. سياسة

عندما يكون عامل أخطاء مختلفة وتجهيز خطأ مختلفة تتطلب استراتيجيات مختلفة ويجب وضع هذه الاستراتيجيات المختلفة معا كمجموعة لتطبيق نفس النوع من العمليات. ثم نستطيع كتابة هذه مجموعة من السياسات:

 Policy.Wrap (تراجع، ذاكرة التخزين المؤقت، إعادة المحاولة، الكسارة، مهلة، الحاجز)؛

ملخص

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

نبذة عن الكاتب: تشو الصلب القلم اسم مواء ر، CSDN بلوق خبير، وصافي مهندس التنمية كبار و 7 سنوات من الخبرة في مجال التنمية في الخطوط الأمامية، وشارك في تطوير نظم الحكومة الإلكترونية وأنظمة خدمة العملاء AI، والهندسة المعمارية موقع التوظيف الإنترنت، أعمل حاليا في بكين ديفيد Carse، وهوى المالية تطوير التكنولوجيا المحدودة، وتعمل في مجال تطوير نظم الضمان على مستوى المؤسسات والمراقبة.

50000 شخص يعملون من المنزل، والتنسيق مدى فعالية؟ البايت يوفر دليلا للضرب

آلة التعلم تحتل قائمة جيدة الأجر، سلسلة كتلة هدأت؟ مهندس برمجيات وضع تفسير 2020

الماضي والحاضر في تطوير شرائح الذكاء الاصطناعي

حول "جرائم" بيثون ثلاثة! لماذا برمجة قدرة 10 مرة أفضل مما كنت الذين مشيدا ذلك؟

العمل من المنزل، وأنا أذهب إلى العمل متعب أيضا من كنت تعتقد ذلك؟

وزارة الدعاية التعليم 200 الحادي عشر مفتشي الدولة، و 300 خاص المشرف التعليم قائمة Nipin

أهنئ! 7 حصل خريجو جامعة بكين على جائزة سلون للأبحاث

بطاريات الحالة الصلبة، والطب عمياء لتعزيز صناعة الطاقة الجديدة

سوف بورش دفع السيارات الصغيرة منخفضة التكلفة؟ ربما كنت ترغب ليست هي نفسها

تحت الوباء، لماذا لا تحذو حذو دائرة سيارة "البائعين Hengda"؟

لجلب سيارة "قناع N95"، أوو قتال طويل ضد السارس ما زال يدفع خمسة الصفقة الجديدة

وباء لا يمكن أن يكون ذريعة لتأخير تنفيذ أسعار السيارات الوطنية الست