Catch up on highlights from Firebase at Google I/O 2023. Learn more

مواقع وظائف السحابة

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

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

المناطق المدعومة

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

تتوفر وظائف السحابة في المناطق التالية بأسعار المستوى 1 :

  • asia-east1 (تايوان)
  • asia-east2 (هونغ كونغ)
  • asia-northeast1 (طوكيو)
  • asia-northeast2 (أوساكا)
  • europe-west1 (بلجيكا) energy_savings_leaf
  • europe-west2 (لندن)
  • us-central1 (آيوا) energy_savings_leaf
  • us-east1 (ساوث كارولينا)
  • us-east4 (شمال فيرجينيا)
  • us-west1 (أوريغون) energy_savings_leaf

تتوفر وظائف السحابة في المناطق التالية بأسعار المستوى 2 :

  • asia-northeast3 (سيول)
  • asia-southeast1 (سنغافورة)
  • asia-southeast2 (جاكرتا)
  • asia-south1 (مومباي)
  • australia-southeast1 (سيدني)
  • europe-central2 (وارسو)
  • europe-west3 (فرانكفورت)
  • europe-west6 (زيورخ) energy_savings_leaf
  • northamerica-northeast1 (مونتريال) energy_savings_leaf
  • southamerica-east1 (ساو باولو) energy_savings_leaf
  • us-west2 (لوس أنجلوس)
  • us-west3 (سالت ليك سيتي)
  • us-west4 (لاس فيغاس)

يجب أن تحتوي الوظائف في منطقة معينة في مشروع معين على أسماء فريدة (غير حساسة لحالة الأحرف) ، لكن الوظائف عبر المناطق أو عبر المشاريع قد تشترك في نفس الاسم.

أفضل الممارسات لتغيير المنطقة

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

لتعيين المنطقة التي تعمل فيها الوظيفة ، قم بتعيين معلمة region في تعريف الوظيفة كما هو موضح:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

يمكنك تحديد مناطق متعددة بتمرير سلاسل منطقة متعددة مفصولة بفواصل في functions.region() . راجع تغيير منطقة الوظيفة للحصول على مزيد من المعلومات حول الإجراءات الموصى بها.

HTTP ووظائف العميل القابلة للاستدعاء

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

اختيار الموقع من جانب العميل للوظائف القابلة للاستدعاء

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

لتعيين المناطق على العميل ، حدد المنطقة المطلوبة عند التهيئة:

سويفت

lazy var functions = Functions.functions(region:"europe-west1")

ج موضوعية

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

الويب


var functions = firebase.app().functions('europe-west1');

ذكري المظهر

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C ++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

وحدة

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

وظائف الخلفية

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

إذا لم تكن وظيفتك معطلة في الوقت الحالي ، أو لم تمتد طاقتها الذاتية إلى ما وراء المنطقة ، فنحن نوصيك أولاً بتنفيذ idempotency قبل نقل الوظيفة.

تختلف توصيات المنطقة المثلى حسب نوع مشغل الحدث:

نوع الزناد توصية المنطقة
سحابة Firestore أقرب منطقة إلى موقع مثيل Cloud Firestore (انظر القسم التالي)
قاعدة بيانات الوقت الفعلي دائما us-central1
سحابة التخزين أقرب منطقة إلى موقع حاوية التخزين السحابي (انظر القسم التالي)
آحرون إذا كنت تتفاعل مع مثيل Realtime Database أو مثيل Cloud Firestore أو حاوية تخزين سحابي داخل الوظيفة ، فإن المنطقة الموصى بها هي نفسها كما لو كانت لديك وظيفة تم تشغيلها بواسطة أحد هذه الموارد. خلاف ذلك ، استخدم المنطقة الافتراضية us-central1 . لاحظ أيضًا أن الوظائف المتصلة باستضافة Firebase يجب أن تكون موجودة في us-central1 .

تحديد المناطق بناءً على مواقع Cloud Firestore والتخزين السحابي

لا تتطابق المناطق المتاحة للوظائف دائمًا بدقة مع المناطق المتاحة لقاعدة بيانات Cloud Firestore وحاويات التخزين السحابي.

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

فيما يلي تعيين لأقرب المناطق التي تدعم الوظائف لـ Cloud Firestore و Cloud Storage ، للحالات التي لا تكون فيها نفس المنطقة مدعومة:

منطقة / مناطق متعددة لـ Cloud Firestore والتخزين السحابي أقرب منطقة للوظائف
nam5 أو us-central (متعدد المناطق) us-central1
eur3 أو europe-west (متعدد المناطق) europe-west1
europe-west4 (هولندا) europe-west1
asia-south1 (مومباي) asia-east2
asia-south2 (دلهي) asia-east2
australia-southeast2 (ملبورن) australia-southeast1