Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

مکانهای عملکردهای Cloud

توابع ابر منطقه ای است، که به معنی زیرساخت اجرا می شود که تابع ابر خود را در مناطق خاص واقع شده است و توسط گوگل موفق به redundantly در سراسر دسترس تمام مناطق در این مناطق .

هنگام انتخاب مناطق مورد استفاده در عملکردها ، ملاحظات اصلی شما باید تأخیر و در دسترس بودن باشد. شما معمولا می تواند انتخاب مناطق نزدیک به کاربران خود را، اما شما همچنین باید محل در نظر سایر محصولات و خدمات که با استفاده از برنامه شما. با استفاده از خدمات در سراسر مناطق متعدد می توانید زمان تاخیر برنامه خود را، و همچنین تحت تاثیر قرار دهد قیمت گذاری .

توابع ابر در مناطق زیر در دسترس است با درجه 1 قیمت گذاری :

  • us-central1 (آیوا)
  • us-east1 (کارولینای جنوبی)
  • us-east4 (ویرجینیای شمالی)
  • europe-west1 (بلژیک)
  • europe-west2 (لندن)
  • asia-east1 (تایوان)
  • asia-east2 (هنگ کنگ)
  • asia-northeast1 (توکیو)
  • asia-northeast2 (اوزاکا)

توابع ابر در مناطق زیر در دسترس است با درجه 2 قیمت گذاری :

  • us-west2 (لس آنجلس)
  • us-west3 (سالت لیک سیتی)
  • us-west4 (لاس وگاس)
  • northamerica-northeast1 (مونترال)
  • southamerica-east1 (سائو پائولو)
  • europe-west3 (فرانکفورت)
  • europe-west6 (زوریخ)
  • europe-central2 (ورشو)
  • australia-southeast1 (سیدنی)
  • asia-south1 (بمبئی)
  • asia-southeast1 (سنگاپور)
  • asia-southeast2 (جاکارتا)
  • asia-northeast3 (سئول)

توابع در یک منطقه معین در یک پروژه معین باید دارای نام های منحصر به فرد (بدون حروف کوچک) باشند ، اما توابع در مناطق یا پروژه ها ممکن است دارای یک نام باشند.

بهترین شیوه ها برای تغییر منطقه

به طور پیش فرض، توابع در اجرا us-central1 منطقه است. توجه داشته باشید که این ممکن است متفاوت از منطقه منبع رویداد ، مانند سطل ذخیره سازی ابر باشد. در صورت نیاز به تغییر ناحیه ای که یک تابع اجرا می شود ، توصیه های این بخش را برای هر نوع ماشه ای عملکرد دنبال کنید.

به مجموعه ای از منطقه که در آن یک تابع اجرا می شود، مجموعه ای از region پارامتر در تعریف تابع به عنوان نشان داده شده است:

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

شما می توانید مناطق متعدد با عبور چند رشته کاما از هم جدا استان در مشخص functions.region() . مشاهده تغییر منطقه یک تابع را برای اطلاعات بیشتر در مورد روش توصیه می شود.

HTTP و توابع قابل تماس با مشتری

برای HTTP و توابع قابل تماس ، توصیه می کنیم ابتدا عملکرد خود را در منطقه مقصد یا نزدیک ترین نقطه به محل مورد انتظار مشتریان قرار دهید و سپس عملکرد اصلی خود را تغییر دهید تا درخواست HTTP آن به عملکرد جدید هدایت شود (آنها می توانند یکسان باشند نام). اگر سرویس گیرنده های عملکرد HTTP شما از تغییر مسیرها پشتیبانی می کنند ، می توانید به سادگی عملکرد اصلی خود را تغییر دهید تا وضعیت هدایت HTTP (301) به همراه URL عملکرد جدید شما بازگردانده شود. اگر شما و مشتریان شما انجام تغییرمسیر رسیدگی نمی کند، شما می توانید پروکسی درخواست از تابع اصلی به تابع جدید را با شروع یک درخواست جدید از تابع اصلی به تابع جدید. آخرین مرحله این است که اطمینان حاصل شود که همه مشتریان با تابع جدید تماس می گیرند.

انتخاب مکان سمت مشتری برای عملکردهای قابل تماس

در مورد عملکرد قابل تماس ، تنظیمات تماس گیرنده باید از دستورالعمل های مشابه عملکردهای 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");

C ++

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

وحدت

firebase.Functions.FirebaseFunctions functions;

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

توابع پس زمینه

توابع پس زمینه حداقل یک بار معنای تحویل رویداد را اتخاذ می کنند ، به این معنی که در برخی شرایط ممکن است رویدادهای تکراری دریافت کنند. بنابراین، شما باید توابع پیاده سازی به idempotent . اگر عملکرد شما قبلاً idempotent است ، می توانید تابع را در منطقه جدید با همان ماشه رویداد مجدداً مستقر کرده و پس از تأیید اینکه تابع جدید به درستی ترافیک دریافت می کند ، عملکرد قبلی را حذف کنید. در طول این انتقال ، هر دو عملکرد رویدادهایی را دریافت خواهند کرد. مشاهده تغییر منطقه یک تابع را برای توالی توصیه می شود از دستورات به تغییر مناطق برای توابع.

اگر عملکرد شما در حال حاضر idempotent نیست ، یا idempotency آن از منطقه فراتر نمی رود ، پس توصیه می کنیم ابتدا idempotency را قبل از انتقال تابع پیاده سازی کنید.

توصیه های منطقه بهینه براساس نوع ماشه رویداد متفاوت است:

نوع ماشه توصیه منطقه
Cloud Firestore نزدیکترین منطقه به محل نمونه Cloud Firestore (بخش بعدی را ببینید)
پایگاه داده بیدرنگ همیشه us-central1
فضای ذخیره ابری نزدیکترین منطقه به محل سطل ذخیره سازی ابر (بخش بعدی را ببینید)
دیگران اگر در حال تعامل با یک نمونه پایگاه داده در زمان واقعی ، یک نمونه از Cloud Firestore یا یک سطل ذخیره سازی ابری در داخل عملکرد هستید ، منطقه توصیه شده همان است که اگر یک تابع توسط یکی از آن منابع فعال شده باشد. در غیر این صورت، با استفاده از منطقه به طور پیش فرض از us-central1 . توجه داشته باشید که توابع متصل به فایربیس میزبانی باید در واقع شود us-central1 .

انتخاب مناطق بر اساس مکان های Cloud Firestore و Cloud Storage

مناطق موجود برای عملکردها همیشه دقیقاً با مناطق موجود برای پایگاه داده Cloud Firestore و سطل های ذخیره سازی ابری شما مطابقت ندارند.

توجه داشته باشید که اگر عملکرد خود را و منابع (مثال پایگاه داده یا سطل ابر ذخیره سازی) خود را در مکان های مختلف، پس از آن شما می توانید به طور بالقوه تجربه افزایش زمان تاخیر و هزینه های صدور صورت حساب .

در اینجا یک نگاشت از نزدیک ترین توابع پشتیبانی مناطق برای ابر Firestore و ابر ذخیره سازی است، برای موارد که در آن همان منطقه پشتیبانی نمیشود:

منطقه/چند منطقه برای Cloud Firestore و Cloud Storage نزدیکترین منطقه برای توابع
nam5 یا us-central (چند منطقه) us-central1
eur3 یا europe-west (چند منطقه) europe-west1
asia-south1 (بمبئی) asia-east2