المواقع الجغرافية لـ Cloud Functions

‫Cloud Functions هي خدمة إقليمية، ما يعني أنّ البنية التحتية التي تشغّل وظيفتك تقع في مناطق معيّنة وتديرها Google لتكون متاحة بشكل متكرّر في جميع المناطق ضمن تلك المناطق.

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

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

بعد النشر، يمكنك التحقّق من المنطقة في وحدة تحكّم Firebase أو من خلال تنفيذ firebase functions:list. إذا أردت تشغيل الدالة في منطقة مختلفة، يمكنك تغيير منطقتها.

المناطق التي تتوفّر فيها هذه الميزة

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

الأسعار في المستوى 1

تتوفّر Cloud Functions في المناطق التالية مع الأسعار من الفئة 1:

المنطقة الموقع الجغرافي إصدارات المنتجات المتوافقة انبعاثات ثاني أكسيد الكربون (CO2)
africa-south1 جوهانسبرغ الجيل الثاني فقط
asia-east1 تايوان الجيل الأول والجيل الثاني
asia-east2 هونغ كونغ الجيل الأول فقط
asia-northeast1 طوکیو الجيل الأول والجيل الثاني
asia-northeast2 أوساكا الجيل الأول والجيل الثاني
europe-north1 فنلندا الجيل الثاني فقط energy_savings_leaf
europe-southwest1 مدرید الجيل الثاني فقط
europe-west1 بلجيكا الجيل الأول والجيل الثاني energy_savings_leaf
europe-west4 هولندا الجيل الثاني فقط
europe-west8 ميلان الجيل الثاني فقط
europe-west9 باريس الجيل الثاني فقط energy_savings_leaf
me-west1 تل أبيب الجيل الثاني فقط
europe-west2 لندن الجيل الأول فقط
us-central1 آيوا الجيل الأول والجيل الثاني energy_savings_leaf
us-east1 كارولاينا الجنوبية الجيل الأول والجيل الثاني
us-east4 فرجينيا الشمالية الجيل الأول والجيل الثاني
us-east5 كولومبوس الجيل الثاني فقط
us-south1 دالاس الجيل الثاني فقط
us-west1 أوريغون الجيل الأول والجيل الثاني energy_savings_leaf

الأسعار في المستوى 2

تتوفّر Cloud Functions في المناطق التالية مع الأسعار من الفئة 2:

المنطقة الموقع الجغرافي إصدارات المنتجات المتوافقة انبعاثات ثاني أكسيد الكربون
asia-east2 هونغ كونغ الجيل الثاني فقط
asia-northeast3 سول الجيل الأول والجيل الثاني
asia-southeast1 سنغافورة الجيل الأول والجيل الثاني
asia-southeast2 جاکرتا الجيل الأول والجيل الثاني
asia-south1 مومباي الجيل الثاني فقط
asia-south2 دلهي، الهند الجيل الثاني فقط
australia-southeast1 سيدني الجيل الأول والجيل الثاني
australia-southeast2 ميلبورن الجيل الثاني فقط
europe-central2 وارسو الجيل الأول والجيل الثاني
europe-west2 لندن الجيل الثاني فقط
europe-west3 فرانكفورت الجيل الأول والجيل الثاني energy_savings_leaf
europe-west6 زيورخ الجيل الأول والجيل الثاني energy_savings_leaf
europe-west10 برلين الجيل الثاني فقط
europe-west12 تورينو الجيل الثاني فقط
me-central1 الدوحة الجيل الثاني فقط
me-central2 الدمام الجيل الثاني فقط
northamerica-northeast1 مونتريال الجيل الأول والجيل الثاني energy_savings_leaf
northamerica-northeast2 تورونتو الجيل الثاني فقط energy_savings_leaf
southamerica-east1 ساو باولو الجيل الأول والجيل الثاني energy_savings_leaf
southamerica-west1 سانتياغو، تشيلي الجيل الثاني فقط
us-west2 لوس انجلوس الجيل الأول والجيل الثاني
us-west3 سولت ليك سيتي الجيل الأول والجيل الثاني
us-west4 لاس فيغاس الجيل الأول والجيل الثاني

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

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

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

ننصحك بتحديد مناطق معيّنة بدلاً من الاعتماد على الإعدادات التلقائية في Firebase، والتي قد تتغيّر بمرور الوقت. عند ضبط المناطق، اتّبِع الاقتراحات الواردة في هذا القسم لكل نوع من المشغّلات.

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

Node.js

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

Python

# 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. يُرجى العِلم أيضًا أنّه عند تحديد منطقة للعديد من أنواع المشغّلات التي تعمل في الخلفية، عليك تحديد فلتر الأحداث الصحيح مع المنطقة. في المثال أعلاه، هذا هو Cloud Firestore document الذي يرسل الحدث. بالنسبة إلى مشغّل Cloud Storage، يمكن أن يكون فلتر الأحداث bucket، وبالنسبة إلى مشغّل Pub/Sub، سيكون topic، وهكذا.

لمزيد من المعلومات حول تغيير منطقة وظيفة تعالج عددًا كبيرًا من الزيارات، يُرجى الاطّلاع على مقالة تغيير منطقة وظيفة.

دوال HTTP والدوال التي يمكن استدعاؤها من العميل

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

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

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

لضبط المناطق على العميل، حدِّد المنطقة المطلوبة عند بدء التشغيل:

Swift

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

Objective-C

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

الويب


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

Android

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

C++‎

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

Unity

firebase.Functions.FirebaseFunctions functions;

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

الدوال التي تعمل في الخلفية

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

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

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

نوع المشغّل اقتراح منطقة
Cloud Firestore المنطقة الأقرب إلى الموقع الجغرافي لمثيل Cloud Firestore (يُرجى الاطّلاع على القسم التالي)
Realtime Database المنطقة نفسها التي يتوفّر فيها مثيل Realtime Database
Cloud Storage المنطقة الأقرب إلى موقع الحزمة Cloud Storage (راجِع القسم التالي)
غير ذلك إذا كنت تتفاعل مع مثيل Realtime Database أو مثيل Cloud Firestore أو حزمة Cloud Storage داخل الدالة، ستكون المنطقة المقترَحة هي نفسها كما لو كانت لديك دالة يتم تشغيلها بواسطة أحد هذه الموارد. يمكن أن تكون الدوال المرتبطة بـ Firebase Hosting في أي منطقة، ولكن يُرجى الاطّلاع على نظرة عامة حول الاستضافة بدون خادم للحصول على اقتراحات.

اختيار المناطق استنادًا إلى المواقع الجغرافية Cloud Firestore وCloud Storage

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

يُرجى العِلم أنّه إذا كانت الدالة والمورد (مثيل قاعدة البيانات أو Cloud Storage الحزمة) في موقعَين مختلفَين، قد تواجه زيادة في وقت الاستجابة وتكاليف الفوترة.

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

المنطقة أو المناطق المتعددة في Cloud Firestore وCloud Storage المنطقة الأقرب للدوال
‫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