Cloud Functions هي خدمة إقليمية، ما يعني أنّ البنية الأساسية التي تشغّل دالتك تقع في مناطق معيّنة وتديرها Google لتكون متاحة بشكل احتياطي في جميع المناطق ضمن هذه المناطق.
عند اختيار المناطق التي تريد تشغيل الدوال فيها، يجب أن يكون التركيز الأساسي على وقت الاستجابة والتوفّر. يمكنك بشكل عام اختيار مناطق قريبة من المستخدمين، ولكن عليك أيضًا مراعاة موقع المنتجات والخدمات الأخرى التي يستخدمها تطبيقك. يمكن أن يؤثر استخدام الخدمات في مناطق متعددة في وقت استجابة تطبيقك، بالإضافة إلى التسعير.
تلقائيًا، تنشر Firebase CLI الدوال في منطقة استنادًا إلى إعدادات مشروعك. بالنسبة إلى الدوال المستندة إلى الأحداث، يتم نشرها عادةً في منطقة
مصدر البيانات الذي يشغّلها (مثل قاعدة بيانات 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 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 |