مواقع الدوال السحابية

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

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

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

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

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

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

  • asia-east1 (تايوان)
  • asia-east2 (هونغ كونغ) الجيل الأول فقط
  • asia-northeast1 (طوكيو)
  • asia-northeast2 (أوساكا)
  • europe-north1 (فنلندا) energy_savings_leaf الجيل الثاني فقط
  • europe-west1 (بلجيكا) energy_savings_leaf
  • europe-west2 (لندن) الجيل الأول فقط
  • us-central1 (آيوا) energy_savings_leaf
  • us-east1 (كارولينا الجنوبية)
  • us-east4 (فيرجينيا الشمالية)
  • us-west1 (أوريغون) energy_savings_leaf

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

  • asia-east2 (هونغ كونغ) الجيل الثاني فقط
  • asia-northeast3 (سول)
  • asia-southeast1 (سنغافورة)
  • asia-southeast2 (جاكرتا)
  • asia-south1 (مومباي) الجيل الثاني فقط
  • australia-southeast1 (سيدني)
  • australia-southeast2 (ملبورن) الجيل الثاني فقط
  • europe-central2 (وارسو)
  • europe-west2 (لندن) الجيل الثاني فقط
  • europe-west3 (فرانكفورت)
  • europe-west6 (زيورخ) energy_savings_leaf
  • 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. تجدر الإشارة أيضًا إلى أنّه عند تحديد منطقة للعديد من أنواع المشغّلات في الخلفية، ستحتاج إلى تحديد فلتر الحدث الصحيح والمنطقة. في المثال أعلاه، هذا هو document Cloud Firestore الذي ينبعث من الحدث. بالنسبة إلى مشغّل 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 (يُرجى الاطّلاع على القسم التالي)
قاعدة بيانات الوقت الفعلي دائمًا us-central1
Cloud Storage أقرب منطقة إلى موقع حزمة Cloud Storage (راجِع القسم التالي)
غير ذلك إذا كنت تتفاعل مع مثيل قاعدة بيانات في الوقت الفعلي أو مثيل Cloud Firestore أو حزمة Cloud Storage داخل الدالة، ستكون المنطقة المقترَحة هي نفسها كما لو كانت لديك دالة تم تشغيلها باستخدام أحد هذه الموارد. في الحالات الأخرى، يمكنك استخدام المنطقة التلقائية من us-central1. يمكن أن تكون الدوال المرتبطة بـ "استضافة Firebase" من أي منطقة، ولكن يمكنك الاطّلاع على النظرة العامة للاستضافة بدون خادم للحصول على اقتراحات.

اختيار المناطق استنادًا إلى موقعَي 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