Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

क्लाउड फ़ंक्शंस स्थान

क्लाउड फ़ंक्शंस क्षेत्रीय है , जिसका अर्थ है कि आपके क्लाउड फ़ंक्शन को चलाने वाला बुनियादी ढांचा विशिष्ट क्षेत्रों में स्थित है और उन क्षेत्रों के सभी क्षेत्रों में अनावश्यक रूप से उपलब्ध होने के लिए Google द्वारा प्रबंधित किया जाता है।

अपने कार्यों को चलाने के लिए किन क्षेत्रों का चयन करते समय, आपका प्राथमिक विचार विलंबता और उपलब्धता होना चाहिए। आप आम तौर पर अपने उपयोगकर्ताओं के निकट के क्षेत्रों का चयन कर सकते हैं, लेकिन आपको उन अन्य उत्पादों और सेवाओं के स्थान पर भी विचार करना चाहिए जिनका उपयोग आपका ऐप करता है। अनेक क्षेत्रों में सेवाओं का उपयोग करने से आपके ऐप की प्रतीक्षा अवधि और साथ ही मूल्य निर्धारण प्रभावित हो सकता है।

क्लाउड फ़ंक्शंस निम्न क्षेत्रों में टियर 1 मूल्य निर्धारण के साथ उपलब्ध है:

  • us-central1 (आयोवा)
  • us-east1 (दक्षिण कैरोलिना)
  • us-east4 (उत्तरी वर्जीनिया)
  • europe-west1 (बेल्जियम)
  • europe-west2 (लंदन)
  • asia-east2 (हांगकांग)
  • asia-northeast1 (टोक्यो)
  • asia-northeast2 (ओसाका)

क्लाउड फ़ंक्शंस निम्न क्षेत्रों में टियर 2 मूल्य निर्धारण के साथ उपलब्ध है:

  • us-west2 (लॉस एंजिल्स)
  • us-west3 (साल्ट लेक सिटी)
  • us-west4 (लास वेगास)
  • europe-central2 (वारसॉ)
  • europe-west3 (फ्रैंकफर्ट)
  • europe-west6 (ज्यूरिख)
  • northamerica-northeast1 (मॉन्ट्रियल)
  • southamerica-east1 (साओ पाउलो)
  • australia-southeast1 (सिडनी)
  • asia-south1 (मुंबई)
  • asia-southeast2 (जकार्ता)
  • asia-northeast3 (सियोल)

किसी दिए गए प्रोजेक्ट में किसी दिए गए क्षेत्र में कार्यों में अद्वितीय (केस असंवेदनशील) नाम होना चाहिए, लेकिन सभी क्षेत्रों या परियोजनाओं में कार्य समान नाम साझा कर सकते हैं।

क्षेत्र बदलने के लिए सर्वोत्तम अभ्यास

डिफ़ॉल्ट रूप से, फ़ंक्शन us-central1 क्षेत्र में चलते us-central1 । ध्यान दें कि यह किसी इवेंट स्रोत के क्षेत्र से भिन्न हो सकता है, जैसे कि क्लाउड स्टोरेज बकेट। यदि आपको उस क्षेत्र को बदलने की आवश्यकता है जहां कोई फ़ंक्शन चलता है, तो प्रत्येक फ़ंक्शन ट्रिगर प्रकार के लिए इस अनुभाग में अनुशंसाओं का पालन करें।

उस क्षेत्र को सेट करने के लिए जहां कोई फ़ंक्शन चलता है, फ़ंक्शन परिभाषा में region पैरामीटर को दिखाए गए अनुसार सेट करें:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

आप functions.region() में कई कॉमा-सेपरेटेड रीजन स्ट्रिंग्स पास करके कई क्षेत्रों को निर्दिष्ट कर सकते हैं। अनुशंसित प्रक्रियाओं के बारे में अधिक जानकारी के लिए फ़ंक्शन का क्षेत्र बदलें देखें।

HTTP और क्लाइंट-कॉल करने योग्य फ़ंक्शन

HTTP और कॉल करने योग्य फ़ंक्शंस के लिए, हम अनुशंसा करते हैं कि आप पहले अपने फ़ंक्शन को गंतव्य क्षेत्र में सेट करें, या जहां सबसे अधिक अपेक्षित ग्राहक स्थित हैं, और फिर अपने मूल फ़ंक्शन को उसके HTTP अनुरोध को नए फ़ंक्शन पर रीडायरेक्ट करने के लिए बदलें (उनके पास वही हो सकता है नाम)। यदि आपके HTTP फ़ंक्शन के क्लाइंट रीडायरेक्ट का समर्थन करते हैं, तो आप अपने नए फ़ंक्शन के URL के साथ HTTP रीडायरेक्ट स्थिति (301) वापस करने के लिए अपने मूल फ़ंक्शन को आसानी से बदल सकते हैं। यदि आपके क्लाइंट रीडायरेक्ट को अच्छी तरह से हैंडल नहीं करते हैं, तो आप मूल फ़ंक्शन से नए फ़ंक्शन के लिए एक नया अनुरोध शुरू करके मूल फ़ंक्शन से नए फ़ंक्शन के लिए अनुरोध को प्रॉक्सी कर सकते हैं। अंतिम चरण यह सुनिश्चित करना है कि सभी क्लाइंट नए फ़ंक्शन को कॉल कर रहे हैं।

कॉल करने योग्य कार्यों के लिए क्लाइंट-साइड स्थान चयन

कॉल करने योग्य फ़ंक्शन के संबंध में, क्लाइंट कॉल करने योग्य सेटअप को HTTP फ़ंक्शंस के समान दिशानिर्देशों का पालन करना चाहिए। क्लाइंट एक क्षेत्र भी निर्दिष्ट कर सकता है, और ऐसा करना चाहिए यदि फ़ंक्शन us-central1 अलावा किसी अन्य क्षेत्र में चलता है।

क्लाइंट पर क्षेत्र सेट करने के लिए, आरंभीकरण पर वांछित क्षेत्र निर्दिष्ट करें:

तीव्र

lazy var functions = Functions.functions(region:"europe-west1")

उद्देश्य सी

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

वेब


var functions = firebase.app().functions('europe-west1');
a

एंड्रॉयड

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

सी++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

एकता

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

पृष्ठभूमि कार्य

बैकग्राउंड फ़ंक्शंस कम से कम एक बार ईवेंट डिलीवरी सिमेंटिक को अपनाते हैं, जिसका अर्थ है कि कुछ परिस्थितियों में उन्हें डुप्लिकेट ईवेंट प्राप्त हो सकते हैं। तो, आपको idempotent होने के लिए कार्यों को लागू करना चाहिए। यदि आपका फ़ंक्शन पहले से ही निष्क्रिय है, तो आप नए क्षेत्र में फ़ंक्शन को उसी ईवेंट ट्रिगर के साथ पुन: नियोजित कर सकते हैं और यह सत्यापित करने के बाद कि नया फ़ंक्शन सही ढंग से ट्रैफ़िक प्राप्त कर रहा है, पुराने फ़ंक्शन को हटा दें। इस संक्रमण के दौरान, दोनों कार्यों को ईवेंट प्राप्त होंगे। कार्यों के लिए क्षेत्रों को बदलने के लिए आदेशों के अनुशंसित अनुक्रम के लिए फ़ंक्शन का क्षेत्र बदलें देखें।

यदि आपका फ़ंक्शन वर्तमान में idempotent नहीं है, या इसकी idempotency क्षेत्र से आगे नहीं बढ़ती है, तो हम अनुशंसा करते हैं कि आप फ़ंक्शन को स्थानांतरित करने से पहले पहले idempotency लागू करें।

इष्टतम क्षेत्र अनुशंसाएँ ईवेंट ट्रिगर प्रकार के अनुसार भिन्न होती हैं:

ट्रिगर प्रकार क्षेत्र की सिफारिश
क्लाउड फायरस्टोर Cloud Firestore इंस्टेंस लोकेशन का निकटतम क्षेत्र (अगला भाग देखें)
रीयलटाइम डेटाबेस हमेशा us-central1
बादल भंडारण Cloud Storage बकेट लोकेशन का सबसे नजदीकी क्षेत्र (अगला सेक्शन देखें)
अन्य यदि आप किसी रीयलटाइम डेटाबेस इंस्टेंस, क्लाउड फायरस्टोर इंस्टेंस, या फ़ंक्शन के अंदर क्लाउड स्टोरेज बकेट के साथ इंटरैक्ट कर रहे हैं, तो अनुशंसित क्षेत्र वही है जैसे कि आपके पास उन संसाधनों में से एक द्वारा ट्रिगर किया गया फ़ंक्शन था। अन्यथा, us-central1 के डिफ़ॉल्ट क्षेत्र का उपयोग करें। यह भी ध्यान दें कि फायरबेस होस्टिंग से जुड़े फ़ंक्शन us-central1 में स्थित होने चाहिए।

क्लाउड फायरस्टोर और क्लाउड स्टोरेज स्थानों के आधार पर क्षेत्रों का चयन

फ़ंक्शन के लिए उपलब्ध क्षेत्र हमेशा आपके Cloud Firestore डेटाबेस और आपके Cloud Storage बकेट के लिए उपलब्ध क्षेत्रों से सटीक रूप से मेल नहीं खाते हैं।

ध्यान दें कि यदि आपका फ़ंक्शन और आपका संसाधन (डेटाबेस इंस्टेंस या क्लाउड स्टोरेज बकेट) अलग-अलग स्थानों पर हैं, तो आप संभावित रूप से बढ़ी हुई विलंबता और बिलिंग लागतों का अनुभव कर सकते हैं

यहां क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए निकटतम फ़ंक्शन-समर्थित क्षेत्रों की मैपिंग है, जहां एक ही क्षेत्र समर्थित नहीं है :

क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए क्षेत्र/बहु-क्षेत्र कार्यों के लिए निकटतम क्षेत्र
nam5 या nam5 us-central (बहु-क्षेत्र) us-central1
eur3 या europe-west (बहु-क्षेत्र) europe-west1
asia-south1 (मुंबई) asia-east2