Cloud Functions هي خدمة إقليمية، ما يعني أنّ البنية الأساسية التي تشغّل الدالة تقع في مناطق محدّدة وتديرها Google لتكون متاحة بشكل متكرر في جميع المناطق داخل تلك المناطق.
عند اختيار المناطق التي تريد تشغيل الدوال فيها، يجب أن تكون الاعتبارات الأساسية هي وقت الاستجابة ومدى التوفّر. يمكنك بشكل عام اختيار مناطق قريبة من المستخدمين، ولكن يجب أيضًا مراعاة الموقع الجغرافي للمنتجات والخدمات الأخرى التي يستخدمها تطبيقك. يمكن أن يؤثر استخدام الخدمات في مناطق متعددة في وقت استجابة تطبيقك، بالإضافة إلى الأسعار.
تلقائيًا، تنشر واجهة سطر أوامر Firebase الدوال في منطقة معيّنة استنادًا إلى إعدادات مشروعك. بالنسبة إلى الدوال المستندة إلى الأحداث، يتم نشرها عادةً في منطقة ضمن منطقة مصدر البيانات الذي يشغّلها (مثل قاعدة بيانات 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:
| المنطقة | الموقع الجغرافي | إصدارات المنتجات المتوافقة | انبعاثات ثاني أكسيد الكربون (CO2) |
|---|---|---|---|
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 الدوال في منطقة معيّنة استنادًا إلى إعدادات مشروعك. بالنسبة إلى الدوال المستندة إلى الأحداث، يتم نشرها عادةً في منطقة ضمن منطقة مصدر البيانات الذي يشغّلها (مثل قاعدة بيانات 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 للدالة الجديدة. إذا لم تكن برامجك تتعامل مع عمليات إعادة التوجيه بشكل جيد، يمكنك استخدام خادم وكيل للطلب من الدالة الأصلية إلى الدالة الجديدة عن طريق بدء طلب جديد من الدالة الأصلية إلى الدالة الجديدة. الخطوة الأخيرة هي التأكد من أن جميع العملاء يستدعون الدالة الجديدة.
اختيار الموقع الجغرافي من جهة العميل للدوال القابلة للاستدعاء
Regarding the callable function, client callable setups should follow the same guidelines as HTTP functions. يمكن للعميل أيضًا تحديد منطقة، ويجب عليه القيام بذلك إذا كانت الدالة تعمل في منطقة أخرى غير المنطقة الافتراضية للمشروع.
لضبط المناطق على العميل، حدِّد المنطقة المطلوبة عند الإعداد:
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 |