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

ตำแหน่งฟังก์ชั่นคลาวด์

ฟังก์ชั่นเมฆเป็นภูมิภาคซึ่งหมายความว่าโครงสร้างพื้นฐานที่ทำงานฟังก์ชั่นคลาวด์ของคุณตั้งอยู่ในภูมิภาคที่เฉพาะเจาะจงและมีการจัดการโดย Google ที่จะเกินความจำเป็นที่มีอยู่ใน ทุกโซนภายในพื้นที่เหล่านั้น

เมื่อเลือกภูมิภาคที่จะเรียกใช้ฟังก์ชันของคุณ ข้อควรพิจารณาหลัก ๆ ของคุณคือเวลาแฝงและความพร้อมใช้งาน คุณมักจะเลือกภูมิภาคใกล้ชิดกับผู้ใช้ของคุณ แต่คุณยังควรพิจารณาสถานที่ตั้งของ ผลิตภัณฑ์และบริการอื่น ๆ ที่ใช้แอปของคุณ การใช้บริการข้ามภูมิภาคหลายคนสามารถส่งผลกระทบต่อความล่าช้าของแอปเช่นเดียวกับ การกำหนดราคา

ฟังก์ชั่นคลาวด์ที่มีอยู่ในภูมิภาคต่อไปนี้มี เงินกองทุนชั้นที่ 1 การกำหนดราคา :

  • us-central1 (ไอโอวา)
  • us-east1 (เซาท์แคโรไลนา)
  • us-east4 (ตอนเหนือของเวอร์จิเนีย)
  • europe-west1 (เบลเยียม)
  • europe-west2 (ลอนดอน)
  • asia-east1 (ไต้หวัน)
  • asia-east2 (ฮ่องกง)
  • asia-northeast1 (โตเกียว)
  • asia-northeast2 (โอซาก้า)

ฟังก์ชั่นคลาวด์ที่มีอยู่ในภูมิภาคต่อไปนี้มี เงินกองทุนชั้นที่ 2 การกำหนดราคา :

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • northamerica-northeast1 (ทรีล)
  • southamerica-east1 (เซาเปาโล)
  • europe-west3 (แฟรงค์เฟิร์ต)
  • europe-west6 (ซูริค)
  • europe-central2 (วอร์ซอ)
  • australia-southeast1 (ซิดนีย์)
  • asia-south1 (Mumbai)
  • asia-southeast1 (สิงคโปร์)
  • asia-southeast2 (จาการ์ตา)
  • asia-northeast3 (โซล)

ฟังก์ชันในภูมิภาคที่กำหนดในโปรเจ็กต์ที่กำหนดต้องมีชื่อที่ไม่ซ้ำกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) แต่ฟังก์ชันข้ามภูมิภาคหรือข้ามโปรเจ็กต์อาจใช้ชื่อเดียวกัน

แนวทางปฏิบัติที่ดีที่สุดสำหรับการเปลี่ยนภูมิภาค

โดยค่าเริ่มต้นฟังก์ชั่นทำงานใน us-central1 ภูมิภาค โปรดทราบว่าสิ่งนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage หากคุณต้องการเปลี่ยนขอบเขตที่ฟังก์ชันทำงาน ให้ทำตามคำแนะนำในส่วนนี้สำหรับทริกเกอร์ฟังก์ชันแต่ละประเภท

ในการตั้งค่าภูมิภาคที่ฟังก์ชั่นการทำงาน, การตั้งค่า region พารามิเตอร์ในความหมายฟังก์ชั่นที่แสดง:

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

คุณสามารถระบุหลายภูมิภาคโดยผ่านหลายคั่นด้วยเครื่องหมายจุลภาคสตริงภูมิภาค functions.region() ดู เปลี่ยนพื้นที่ฟังก์ชั่นของ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนการแนะนำ

ฟังก์ชัน HTTP และไคลเอ็นต์เรียกได้

สำหรับฟังก์ชัน HTTP และฟังก์ชันที่เรียกได้ เราขอแนะนำให้คุณตั้งค่าฟังก์ชันของคุณเป็นภูมิภาคปลายทางก่อน หรือใกล้กับตำแหน่งที่ลูกค้าคาดหวังมากที่สุดก่อน จากนั้นจึงแก้ไขฟังก์ชันเดิมของคุณเพื่อเปลี่ยนเส้นทางคำขอ HTTP ไปยังฟังก์ชันใหม่ (พวกเขาสามารถมีเหมือนกัน ชื่อ). หากไคลเอนต์ของฟังก์ชัน HTTP ของคุณรองรับการเปลี่ยนเส้นทาง คุณสามารถเปลี่ยนฟังก์ชันดั้งเดิมของคุณเพื่อส่งคืนสถานะการเปลี่ยนเส้นทาง HTTP (301) พร้อมกับ URL ของฟังก์ชันใหม่ของคุณ ถ้าลูกค้าของคุณไม่ได้จัดการเปลี่ยนเส้นทางเดียวคุณสามารถพร็อกซี่คำขอจากฟังก์ชั่นเดิมกับฟังก์ชั่นใหม่โดยมีแนวคิดริเริ่มคำขอใหม่จากฟังก์ชั่นเดิมกับฟังก์ชั่นใหม่ ขั้นตอนสุดท้ายคือการทำให้แน่ใจว่าลูกค้าทั้งหมดกำลังเรียกใช้ฟังก์ชันใหม่

การเลือกตำแหน่งฝั่งไคลเอ็นต์สำหรับฟังก์ชันที่เรียกได้

เกี่ยวกับฟังก์ชันที่เรียกได้ การตั้งค่าไคลเอ็นต์ที่เรียกได้ควรเป็นไปตามแนวทางเดียวกันกับฟังก์ชัน HTTP ลูกค้ายังสามารถระบุภูมิภาคและจะต้องทำเช่นนั้นถ้าฟังก์ชั่นทำงานในภูมิภาคอื่น ๆ กว่า us-central1

ในการตั้งค่าภูมิภาคบนไคลเอนต์ ให้ระบุภูมิภาคที่ต้องการเมื่อเริ่มต้น:

Swift

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

วัตถุประสงค์-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");

ความสามัคคี

firebase.Functions.FirebaseFunctions functions;

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

ฟังก์ชั่นพื้นหลัง

ฟังก์ชันพื้นหลังใช้ความหมายการส่งเหตุการณ์อย่างน้อยหนึ่งครั้ง ซึ่งหมายความว่าภายใต้สถานการณ์บางอย่างอาจได้รับเหตุการณ์ที่ซ้ำกัน ดังนั้นคุณควรใช้ฟังก์ชั่นที่จะ idempotent หากฟังก์ชันของคุณไม่มีศักยภาพอยู่แล้ว คุณสามารถปรับใช้ฟังก์ชันใหม่ในภูมิภาคใหม่ด้วยทริกเกอร์เหตุการณ์เดียวกัน และลบฟังก์ชันเก่าออกหลังจากที่คุณตรวจสอบว่าฟังก์ชันใหม่ได้รับการรับส่งข้อมูลอย่างถูกต้อง ระหว่างการเปลี่ยนแปลงนี้ ฟังก์ชันทั้งสองจะได้รับเหตุการณ์ ดู เปลี่ยนพื้นที่ฟังก์ชั่นของ สำหรับลำดับที่แนะนำของคำสั่งที่จะเปลี่ยนพื้นที่สำหรับฟังก์ชั่น

หากฟังก์ชันของคุณไม่ได้มีค่าเท่ากันในปัจจุบัน หรือฟังก์ชันนั้นไม่ได้ขยายเกินขอบเขต เราขอแนะนำให้คุณใช้ฟังก์ชัน idempotency ก่อนย้ายฟังก์ชัน

คำแนะนำภูมิภาคที่เหมาะสมที่สุดจะแตกต่างกันไปตามประเภททริกเกอร์เหตุการณ์:

ประเภททริกเกอร์ คำแนะนำภูมิภาค
Cloud Firestore ภูมิภาคที่ใกล้กับตำแหน่งอินสแตนซ์ Cloud Firestore ที่สุด (ดูหัวข้อถัดไป)
ฐานข้อมูลเรียลไทม์ เสมอ us-central1
การจัดเก็บเมฆ ภูมิภาคที่ใกล้กับตำแหน่งที่เก็บข้อมูล Cloud Storage ที่สุด (ดูหัวข้อถัดไป)
คนอื่น หากคุณกำลังโต้ตอบกับอินสแตนซ์ฐานข้อมูลเรียลไทม์ อินสแตนซ์ Cloud Firestore หรือบัคเก็ต Cloud Storage ภายในฟังก์ชัน ภูมิภาคที่แนะนำจะเหมือนกับที่คุณมีฟังก์ชันที่ทริกเกอร์โดยหนึ่งในทรัพยากรเหล่านั้น มิฉะนั้นจะใช้ในภูมิภาคเริ่มต้นของ us-central1 ยังทราบว่าฟังก์ชั่นเชื่อมต่อกับ Firebase Hosting ต้องอยู่ใน us-central1

การเลือกภูมิภาคตามตำแหน่ง Cloud Firestore และ Cloud Storage

ภูมิภาคที่พร้อมใช้งานสำหรับฟังก์ชันไม่ตรงกับภูมิภาคที่มีให้สำหรับฐานข้อมูล Cloud Firestore และที่เก็บข้อมูล Cloud Storage ของคุณอย่างแม่นยำเสมอไป

โปรดทราบว่าถ้าฟังก์ชั่นและทรัพยากร (เช่นฐานข้อมูลหรือถัง Cloud Storage) ของคุณอยู่ในสถานที่ที่แตกต่างกันแล้วคุณอาจจะมีประสบการณ์เพิ่มขึ้นแฝงและ ค่าใช้จ่ายในการเรียกเก็บเงิน

นี่คือการทำแผนที่ของฟังก์ชั่นที่ใกล้เคียงที่สุดได้รับการสนับสนุนพื้นที่สำหรับระบบคลาวด์ FireStore และการจัดเก็บเมฆสำหรับกรณีที่ในภูมิภาคเดียวไม่ได้รับการสนับสนุน:

ภูมิภาค/หลายภูมิภาคสำหรับ Cloud Firestore และ Cloud Storage ภูมิภาคที่ใกล้ที่สุดสำหรับการทำงาน
nam5 หรือ us-central (หลายภูมิภาค) us-central1
eur3 หรือ europe-west (หลายภูมิภาค) europe-west1
asia-south1 (Mumbai) asia-east2