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

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

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

ประเภททริกเกอร์ คำแนะนำภูมิภาค Region
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