Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

समर्थित क्षेत्र

इस खंड की सूचियों में, ऊर्जा_बचत_पत्ती आइकन इंगित करता है कि इस क्षेत्र के लिए बिजली कम कार्बन उत्सर्जन के साथ उत्पादित की जाती है। अधिक जानकारी के लिए, Google क्लाउड क्षेत्रों के लिए कार्बन मुक्त ऊर्जा देखें।

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

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

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

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

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

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

डिफ़ॉल्ट रूप से, कार्य 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');

एंड्रॉयड

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 होने के लिए फ़ंक्शन लागू करना चाहिए। यदि आपका फ़ंक्शन पहले से ही निष्क्रिय है, तो आप उसी ईवेंट ट्रिगर के साथ नए क्षेत्र में फ़ंक्शन को फिर से नियोजित कर सकते हैं और पुराने फ़ंक्शन को यह सत्यापित करने के बाद हटा सकते हैं कि नया फ़ंक्शन सही ढंग से ट्रैफ़िक प्राप्त कर रहा है। इस परिवर्तन के दौरान, दोनों प्रकार्यों को घटनाएँ प्राप्त होंगी। कार्यों के लिए क्षेत्रों को बदलने के लिए आदेशों के अनुशंसित अनुक्रम के लिए फ़ंक्शन का क्षेत्र बदलें देखें।

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

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

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

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

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

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

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

क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए क्षेत्र/बहु-क्षेत्र कार्यों के लिए निकटतम क्षेत्र
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