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

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

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

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

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

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

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

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

  • asia-east2 (هونج كونج) الجيل الثاني فقط
  • asia-northeast3 (سيول)
  • asia-southeast1 (سنغافورة)
  • asia-southeast2 (جاكرتا)
  • asia-south1 (مومباي) الجيل الثاني فقط
  • australia-southeast1 (سيدني)
  • australia-southeast2 (ملبورن) الجيل الثاني فقط
  • europe-central2 (وارسو)
  • europe-west2 (لندن) الجيل الثاني فقط
  • europe-west3 (فرانكفورت)
  • europe-west6 (زيورخ) Energy_ Savings_leaf
  • northamerica-northeast1 (مونتريال) Energy_ Savings_leaf
  • northamerica-northeast2 (تورنتو) Energy_ Savings_leaf الجيل الثاني فقط
  • southamerica-east1 (ساو باولو) Energy_ Savings_leaf
  • southamerica-west1 (سانتياغو، تشيلي) الجيل الثاني فقط
  • us-west2 (لوس أنجلوس)
  • us-west3 (سولت ليك سيتي)
  • us-west4 (لاس فيغاس)

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

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

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

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

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

بايثون

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

يمكنك تحديد مناطق متعددة عن طريق تمرير عدة سلاسل مناطق مفصولة بفواصل في region . لاحظ أيضًا أنه عند تحديد منطقة للعديد من أنواع مشغلات الخلفية، ستحتاج إلى تحديد عامل تصفية الحدث الصحيح مع المنطقة. في المثال أعلاه، هذا هو document Cloud Firestore الذي يرسل الحدث. بالنسبة لمشغل التخزين السحابي، يمكن أن يكون مرشح الحدث bucket ؛ بالنسبة لمشغل Pub/Sub، سيكون الموضوع هو topic ، وما إلى ذلك.

راجع تغيير منطقة الوظيفة للحصول على مزيد من المعلومات حول تغيير المنطقة لوظيفة تتعامل مع حركة الإنتاج.

وظائف 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");

سي ++

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

وحدة

firebase.Functions.FirebaseFunctions functions;

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

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

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

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

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

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

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

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

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

فيما يلي تعيين لأقرب المناطق المدعومة بالوظائف لـ 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