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

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

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

يتم تشغيل الدوالّ تلقائيًا في منطقة us-central1. يُرجى العِلم أنّ هذا قد يكون مختلفًا عن منطقة مصدر الحدث، مثل حزمة Cloud Storage. اطّلِع على كيفية تحديد المنطقة التي يتم فيها تنفيذ دالة لاحقًا في هذه الصفحة.

المناطق التي تتوفّر فيها الخدمة

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

أسعار الفئة 1

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

المنطقة الموقع الجغرافي إصدارات المنتجات المتوافقة انبعاثات ثاني أكسيد الكربون
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 لاس فيغاس الجيل الأول والجيل الثاني

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

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

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

لضبط المنطقة التي يتم فيها تنفيذ الدالة، اضبط المَعلمة 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. يمكن للعملاء أيضًا تحديد منطقة، ويجب عليهم إجراء ذلك إذا تم تشغيل الدالة في أي منطقة غير us-central1.

لضبط المناطق على العميل، حدِّد المنطقة المطلوبة عند الإعداد:

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 us-central1 دائمًا
Cloud Storage أقرب منطقة إلى موقع حزمة Cloud Storage (راجِع القسم التالي)
غير ذلك إذا كنت تتفاعل مع مثيل Realtime Database أو مثيل Cloud Firestore أو حزمة Cloud Storage داخل الدالة، فإنّ المنطقة المُقترَحة هي نفسها كما لو كانت لديك دالة يتم تنشيطها بواسطة أحد موارد ذلك. وإلا، استخدِم المنطقة التلقائية us-central1. يمكن أن تكون الدوالّ المرتبطة بـ 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