AWS Amazon Cloud Partners: كشف النقاب عن طريقة اللعب المتقدمة لـ AWS CloudFront: استخدم Edge @ Lambda لتحقيق اتجاه تخصيص في عقدة الحافة
الأصدقاء الذين لعبوا التجارة الإلكترونية عبر الحدود أو المحطات المستقلة في الخارج أو التطبيقات الخارجية ذات التدفق الكبير ، نعم
Amazon CloudFront (CDN العالمي AWS)
بالتأكيد ليست غريبة. عادة ما يستخدمه الجميع ، غالبًا ما يكون "درع ذاكرة التخزين المؤقت الثابت" الكبير: تخزين الصور مؤقتًا ، وتسريع الفيديو ، ومنع هجمات DDoS الخبيثة.
ولكن إذا كان فهمك لـ CloudFront يبقى فقط في "ذاكرة التخزين المؤقت الثابتة" ، فهذا أمر عنيف حقًا.
تحدث عن طريقة اللعب الصعبة المتقدمة اليوم:
Lambda @ Edge
. بعبارات بسيطة ، يتيح لك "إطلاق" الكود المخصص (Node.js أو Python) مباشرة إلى مئات الآلاف من عقد حافة CDN حول AWS حول العالم. لم يصل الطلب بعد إلى خادم الموقع المصدر الخاص بك. في عقدة CDN الأقرب للمستخدم ، تم تنفيذ الكود وأكمل التحويل المخصص أو إعادة التوجيه أو تعديل المحتوى.
لا يمكن أن يساعد هذا خادم المصدر في مشاركة 90 ٪ من ضغط منطق العمل فحسب ، بل يؤدي أيضًا إلى ضغط تأخير استجابة المستخدمين العالميين إلى أقصى الحدود. دعونا لا نتحدث عن هراء ، فقط قم بفتحه.
المرحلة الأولى: فهم 4 أوقات الزناد لـ Lambda @ Edge
للعب الحيل في عقدة الحافة ، يجب عليك أولاً أن تتذكر سلسلة طلب CloudFront الكاملة. يتم إرسال طلب من الهاتف المحمول للمستخدم للحصول على البيانات ، وسيمر المجموع
4 مستويات
. يمكنك إدخال رمز Lambda الخاص بك بدقة في أي مستوى:
Viewer Request (طلب الجمهور): أرسل المستخدم للتو طلبًا إلى عقدة CDN. في هذا الوقت ، لم يتحقق CDN من وجود ذاكرة التخزين المؤقت الخاصة به. من الأنسب إدخال الرمز هنا: A/B اختبار التحويل ، وحظر عناوين IP ضارة معينة ، وإعادة توجيه عناوين URL القديمة.
Origin Request: تم فحص عقدة CDN ووجدت أنه لا يوجد ذاكرة تخزين مؤقت ، وعلى استعداد لعض الرصاصة والذهاب إلى خادم المصدر الخاص بك للحصول على البيانات. يعد إدخال الرمز هنا مناسبًا: قم بتعديل المسار المصدر ديناميكيًا ، ونقل الطلب إلى محطة مصدر مختلفة وفقًا لجهاز المستخدم (الهاتف المحمول/الكمبيوتر).
Origin Response (استجابة المحطة المصدر): يبصق خادم المحطة المصدر البيانات إلى عقدة CDN وهو جاهز للتخزين في ذاكرة التخزين المؤقت. الرمز المضمن هنا مناسب للقيام بذلك: قم بتنظيف أو إضافة رأس استجابة HTTP محدد ، وحقن سياسة الأمان.
Viewer Response (استجابة الجمهور): تستعد عقدة CDN لإعادة البيانات رسميًا إلى متصفح المستخدم. الرمز المضمن هنا مناسب للقيام بذلك: حقن ديناميكي لبيانات مجزأة مخصصة وغير مناسبة للتخزين المؤقت.
المرحلة الثانية: التدريبات القتالية الفعلية-استخدام البرامج النصية الحافة لتحقيق تحويل اختبار ذكي A/B
الكلام بلا فعل مجرد زيف. نحن نستعيد مباشرة مشهدًا متقدمًا على مستوى المؤسسة: أصدرت الواجهة الأمامية للشركة ميزات جديدة وتحتاج إلى القيام بها
اختبار A/B
. نريد للمستخدمين في جميع أنحاء العالم الوصول
[ها تي
Tps: // yourcompan
Y.com/index.html]
إتش تي
Tps: // yourcompany.com/index.html)
الوقت:
يبقى 50 ٪ من المستخدمين على الصفحة القديمة.
تم تصريف 50 ٪ من المستخدمين بهدوء إلى الصفحة الجديدة index_v2.html.
المتطلبات الصارمة: لا يمكن تغيير عنوان URL الخاص بشريط عنوان متصفح المستخدم للعملية بأكملها ، ولا يمكن السماح لخادم الموقع المصدر بالمشاركة في الحكم ، كل ذلك على حافة CDN.
هذا الطلب هو الأنسب لحام لامدا
Viewer Request (طلب الجمهور)
المستويات.
الخطوة الأولى: في
Us-east-1
الكتابة الجغرافية لوظيفة Lambda
تحذير القانون الحديدي: بغض النظر عن مكان عملك في العالم ، يجب إنشاء Lambda @ Edge في منطقة "us-east-1" ، وإلا لا يمكن نشرها في عقد CDN العالمية.
قم بتسجيل الدخول إلى وحدة التحكم AWS ، وانتقل إلى us-east-1 ، وقم بإنشاء وظيفة Lambda جديدة.
اختيار لغة التشغيل Node.js (تتطلب وظائف الحافة سرعة تنفيذ عالية جدًا ، و Node.js هو الخيار الأول).
فيما يتعلق بالأذونات ، يجب السماح لموضوع الخدمة edgelambda.amazonaws.com باستدعاء الوظيفة في دور التنفيذ.
اكتب الكود المنطقي الأساسي التالي:
انقر على Deploy لحفظ.
المرحلة الثالثة: "إطلاق" الكود إلى عقدة الحافة العالمية
بعد كتابة الكود ، كيف ندعه يقف على عقد CDN حول العالم ؟
في الزاوية العلوية اليمنى من صفحة دالة Lambda ، انقر على "Actions"-> "Deploy to Lambda @ Edge".
تكوين معلمات النشر: Distribution: حدد معرف مثيل CloudFront الحالي. Cache Behavior: حدد سلوك ذاكرة التخزين المؤقت المحدد (مثل الافتراضي * أو لـ/index.html). CloudFront Event: لا تتردد في اختيار Viewer Request.
ضع علامة على النافذة المنبثقة للتأكيد ، وانقر على النشر.
في هذا الوقت ، ستقوم AWS بتنشيط برنامج التوزيع الآلي في السحابة ، حيث تقوم بنسخ وتزامن عشرات الأسطر من كود Node.js الخاص بك مع مئات من عقد حافة CDN حول العالم في غضون دقائق قليلة.
المرحلة الرابعة: تاريخ تجنب الدماء والدموع للتحقق من الاختبار واللعب على الحافة
بعد اكتمال النشر ، يمكنك استخدام الشبكات في جميع أنحاء العالم لتحديث موقع الويب الخاص بك بجنون. ستجد أن شريط العنوان يظهر إلى الأبد
فهرس.html
، ولكن يتم التبديل بشكل عشوائي بين الإصدار القديم والإصدار الجديد على الشاشة. سجل خادم المحطة المصدر نظيف ، ولا يعرف حتى أن اختبار A/B قد حدث ، ويتم حل كل الضغط بواسطة عقدة CDN في المقدمة.
ولكن بعد أن كنت متحمسا على استعداد لوضع جميع الأعمال التجارية على Lambda @ Edge
في السابق ، يجب أن تفهم أولاً هذه القيود القاسية بسبب "التنفيذ الهامشي" ، وإلا فسوف تنهار CDN بالكامل إذا لم تكن حريصًا:
1. "الجسم" الصارم والقيود الزمنية
من أجل متابعة سرعة الاستجابة القصوى ، فإن الموارد التي تركتها عقدة الحافة للرمز بخيل للغاية:
إذا قمت بإضافة رمز إلى مرحلة Viewer Request / Response ، فلا يمكن أن يتجاوز حجم حزمة التعليمات البرمجية 1 ميغابايت ، ولا يمكن أن يتجاوز وقت التنفيذ الإضافي 5 ثوانٍ ، والذاكرة المتاحة هي 128 ميجابايت فقط.
لا تتوقع كتابة نموذج تعلم عميق معقد في عقدة الحافة أو توصيل قاعدة بيانات طويلة المدى التقليدية ذات الكمون العالي. مبدأ رمز الحافة هو: كلما كان ذلك أقصر ، كلما كان ذلك أسرع ، كلما كان ذلك أسرع.
2. منع الاتصال المباشر بقاعدة بيانات الإنتاج (سيؤدي إلى إبطاء سرعة الشبكة)
إذا كان Lambda @ Edge الخاص بك يتصل بقاعدة بيانات MySQL فعلية في بكين أو أوريغون للتحقق من بيانات المستخدم في كل مرة يطلب فيها المستخدم ذلك ، فسيتم القضاء على مزايا التسارع التي يجلبها CDN بسبب التأخير عبر الحدود العالية للشبكة.
الطريقة الصحيحة: إذا كان عليك قراءة البيانات وكتابتها ، فيرجى استخدام Amazon DynamoDB Global Tables (قاعدة بيانات NoSQL الموزعة عالميًا) ، أو الاستفادة من CloudFront KeyValueStore (KVS) مع وظائف محدودة ولكن أسرع.
3. انتبه إلى محفظتك
يتم حساب Lambda @ Edge حسب "عدد الطلبات" و "وقت التنفيذ (مستوى المللي ثانية)". إذا كان موقع الويب الخاص بك يحتوي على مئات الملايين من حركة مرور PV كل يوم ، وكل حركة مرور تؤدي إلى برنامج نصي Viewer Request معقد ، فإن فاتورة Lambda في نهاية الشهر قد تجعلك تشعر بالألم.
خدعة لتوفير المال: إذا قمت فقط بإعادة توجيه HTTP بسيطة ، أو أعادت كتابة المسار وفقًا لرمز البلد ، أو أضفت رأس استجابة أمان (مثل مكافحة الاختطاف HSTS) ، فاستخدم CloudFront Functions أولاً. إنها نسخة منخفضة الوزن وخفيفة الوزن من Lambda @ Edge. سرعة التنفيذ هي جزء صغير من Lambda @ Edge. التكلفة هي جزء صغير فقط من Lambda @ Edge ، ولا يلزم نشرها في دائرة على us-east-1.
الخلاصة
كشف النقاب عن حجاب اللعب المتقدم ، جوهر Lambda @ Edge هو"
قوة الحوسبة المسبقة
". من خلال تجريد المنطق مثل اختبار A/B ، والتحقق من سلسلة مكافحة السرقة ، وإعادة التوجيه التكيفي من جانب الهاتف المحمول من الخادم المركزي ووضعه على العقد الهامشية للتوزيع العالمي ، لا تحصل فقط على خط دفاع أمامي غير قابل للتدمير ومرن بلا حدود ، ولكن أيضًا استخدام أقل تكلفة معمارية مقابل تجربة سلسة وسلسة للمستخدمين العالميين.

