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

تكون "وظائف السحابة الإلكترونية" إقليمية، ما يعني أنّ البنية الأساسية التي تشغِّل وظيفتك تقع في مناطق محدّدة وتديرها Google ومتاحة بشكل متكرر في جميع المناطق داخل تلك المناطق.

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

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

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

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

تتوفّر دالات السحابة الإلكترونية في المناطق التالية باستخدام أسعار المستوى 1:

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

تتوفّر دالات السحابة الإلكترونية في المناطق التالية باستخدام أسعار المستوى 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_saves_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