Cloud Functions هي خدمة إقليمية، ما يعني أنّ البنية الأساسية التي تشغّل الدالة تقع في مناطق معيّنة وتديرها Google لتكون متاحة بشكل متكرّر في جميع المناطق داخل تلك المناطق.
عند اختيار المناطق التي تريد تشغيل وظائفك فيها، يجب أن تكون الاعتبارات الأساسية هي وقت الاستجابة ومدى التوفّر. يمكنك بشكل عام اختيار مناطق قريبة من المستخدمين، ولكن يجب أيضًا مراعاة الموقع الجغرافي للمنتجات والخدمات الأخرى التي يستخدمها تطبيقك. يمكن أن يؤثر استخدام الخدمات في مناطق متعددة في وقت استجابة تطبيقك، بالإضافة إلى التسعير.
تنشُر واجهة سطر الأوامر في Firebase تلقائيًا الدوال في منطقة استنادًا إلى إعدادات مشروعك. بالنسبة إلى الدوال المستندة إلى الأحداث، يتم نشرها عادةً في منطقة مصدر البيانات الذي يؤدي إلى تشغيلها (مثل قاعدة بيانات Cloud Firestore أو حزمة Cloud Storage)، ويتم نشرها في us-central1 كخيار احتياطي.
بعد النشر، يمكنك التحقّق من المنطقة في وحدة تحكّم Firebase أو من خلال تنفيذ firebase functions:list. إذا أردت تشغيل الدالة في منطقة مختلفة، يمكنك تغيير منطقتها.
المناطق التي تتوفّر فيها هذه الميزة
في القوائم الواردة في هذا القسم، يشير رمز energy_savings_leaf إلى أنّ الكهرباء في هذه المنطقة يتم إنتاجها مع انبعاثات كربونية منخفضة. لمزيد من المعلومات، يُرجى الاطّلاع على الطاقة الخالية من الكربون في مناطق Google Cloud.
الأسعار في المستوى 1
تتوفّر Cloud Functions في المناطق التالية مع الأسعار من الفئة 1:
| المنطقة | الموقع الجغرافي | إصدارات المنتجات المتوافقة | انبعاثات ثاني أوكسيد الكربون |
|---|---|---|---|
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 |