Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

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

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

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

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

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

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

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

بشكل افتراضي ، تعمل الوظائف في منطقة 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 وحاويات التخزين السحابي.

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

وفيما يلي رسم الخرائط من أقرب المناطق بدعم ظائف لسحابة Firestore وسحابة التخزين، في الحالات التي لا يتم اعتماد نفس المنطقة:

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