Catch up on everthing we announced at this year's Firebase Summit. Learn more

Các vị trí của Chức năng đám mây

Đám mây Chức năng là khu vực, có nghĩa là cơ sở hạ tầng chạy Chức năng điện toán đám mây của bạn nằm ở khu vực cụ thể và được quản lý bởi Google trở thành dư thừa có sẵn trên tất cả các vùng trong các vùng đó .

Khi chọn vùng nào để chạy các chức năng của bạn, cân nhắc chính của bạn phải là độ trễ và tính khả dụng. Bạn thường có thể chọn khu vực gần với người dùng của bạn, nhưng bạn cũng nên cân nhắc vị trí của các sản phẩm và các dịch vụ khác mà sử dụng ứng dụng của bạn. Sử dụng dịch vụ trên nhiều khu vực có thể ảnh hưởng đến độ trễ của ứng dụng, cũng như giá cả .

Đám mây Chức năng có sẵn trong các khu vực sau đây với Tier 1 giá :

  • us-central1 (Iowa)
  • us-east1 (South Carolina)
  • us-east4 (Bắc Virginia)
  • europe-west1 (Bỉ)
  • europe-west2 (London)
  • asia-east1 (Đài Loan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)

Đám mây Chức năng có sẵn trong các khu vực sau đây với Tier 2 giá :

  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (Sao Paulo)
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurich)
  • europe-central2 (Warsaw)
  • australia-southeast1 (Sydney)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Jakarta)
  • asia-northeast3 (Seoul)

Các chức năng trong một vùng nhất định trong một dự án nhất định phải có tên duy nhất (không phân biệt chữ hoa chữ thường), nhưng các chức năng giữa các vùng hoặc giữa các dự án có thể có cùng tên.

Các phương pháp hay nhất để thay đổi khu vực

Theo mặc định, chức năng chạy trong us-central1 khu vực. Lưu ý rằng vùng này có thể khác với vùng của nguồn sự kiện, chẳng hạn như nhóm Bộ nhớ đám mây. Nếu bạn cần thay đổi khu vực nơi một chức năng chạy, hãy làm theo các đề xuất trong phần này cho từng loại trình kích hoạt chức năng.

Để thiết lập các khu vực nơi một chức năng chạy, thiết lập các region tham số trong định nghĩa hàm như:

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

Bạn có thể chỉ định nhiều vùng bằng cách đi qua nhiều khu vực chuỗi bằng dấu phẩy trong functions.region() . Xem thay đổi khu vực của một chức năng để biết thêm thông tin về các thủ tục đề nghị.

HTTP và các chức năng khách hàng có thể gọi

Đối với các chức năng HTTP và có thể gọi, chúng tôi khuyên bạn trước tiên nên đặt chức năng của mình thành vùng đích hoặc gần nhất với nơi khách hàng mong đợi nhất đang ở, sau đó thay đổi chức năng ban đầu của bạn để chuyển hướng yêu cầu HTTP của nó đến chức năng mới (chúng có thể có cùng Tên). Nếu các ứng dụng khách của chức năng HTTP của bạn hỗ trợ chuyển hướng, bạn có thể chỉ cần thay đổi chức năng ban đầu của mình để trả về trạng thái chuyển hướng HTTP (301) cùng với URL của chức năng mới của bạn. Nếu khách hàng của bạn không xử lý trang đổi hướng tốt, bạn có thể ủy quyền yêu cầu từ chức năng ban đầu để các chức năng mới bằng cách bắt đầu một yêu cầu mới từ chức năng ban đầu để các chức năng mới. Bước cuối cùng là đảm bảo rằng tất cả các máy khách đang gọi hàm mới.

Lựa chọn vị trí phía máy khách cho các chức năng có thể gọi

Về chức năng có thể gọi, các thiết lập có thể gọi của ứng dụng khách phải tuân theo các nguyên tắc tương tự như các chức năng HTTP. Khách hàng cũng có thể chỉ định một khu vực, và phải làm như vậy nếu các chức năng chạy trong bất kỳ khu vực nào khác hơn us-central1 .

Để đặt các vùng trên máy khách, hãy chỉ định vùng mong muốn khi khởi tạo:

Nhanh

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

Objective-C

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

Web


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");

Đoàn kết

firebase.Functions.FirebaseFunctions functions;

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

Các chức năng nền

Các hàm nền sử dụng ngữ nghĩa phân phối sự kiện ít nhất một lần, có nghĩa là trong một số trường hợp, chúng có thể nhận được các sự kiện trùng lặp. Vì vậy, bạn nên thực hiện các chức năng được idempotent . Nếu hàm của bạn đã là không quan trọng, thì bạn có thể triển khai lại hàm trong vùng mới với cùng một trình kích hoạt sự kiện và xóa hàm cũ sau khi bạn xác minh rằng hàm mới đang nhận lưu lượng truy cập một cách chính xác. Trong quá trình chuyển đổi này, cả hai chức năng sẽ nhận được các sự kiện. Xem thay đổi khu vực của một chức năng cho trình tự đề nghị các lệnh để thay đổi vùng cho các chức năng.

Nếu hàm của bạn hiện không phải là idmpotent, hoặc iđêan của nó không vượt ra ngoài vùng, thì chúng tôi khuyên bạn trước tiên nên triển khai iđêan trước khi di chuyển hàm.

Các đề xuất về khu vực tối ưu khác nhau tùy theo loại trình kích hoạt sự kiện:

Loại kích hoạt Đề xuất khu vực
Cloud Firestore Khu vực gần nhất với vị trí phiên bản Cloud Firestore (xem phần tiếp theo)
Cơ sở dữ liệu thời gian thực Luôn luôn us-central1
Lưu trữ đám mây Khu vực gần nhất với vị trí nhóm Cloud Storage (xem phần tiếp theo)
Khác Nếu bạn đang tương tác với phiên bản Cơ sở dữ liệu thời gian thực, phiên bản Cloud Firestore hoặc nhóm lưu trữ đám mây bên trong hàm, thì vùng được đề xuất giống như khi bạn có một hàm được kích hoạt bởi một trong các tài nguyên đó. Nếu không, sử dụng các khu vực mặc định của us-central1 . Cũng lưu ý rằng các chức năng kết nối với căn cứ hỏa lực Hosting phải được bố trí trong us-central1 .

Chọn khu vực dựa trên các vị trí Cloud Firestore và Cloud Storage

Các vùng khả dụng cho các chức năng không phải lúc nào cũng khớp chính xác với các vùng có sẵn cho cơ sở dữ liệu Cloud Firestore và nhóm Bộ nhớ trên đám mây của bạn.

Lưu ý rằng nếu chức năng của bạn và tài nguyên (ví dụ cơ sở dữ liệu hoặc Cloud Storage xô) của bạn tại các địa điểm khác nhau, sau đó bạn có thể có khả năng kinh nghiệm tăng độ trễ và chi phí thanh toán .

Dưới đây là một bản đồ của khu vực gần các chức năng hỗ trợ cho Cloud FireStore và Cloud Storage, đối với trường hợp cùng một vùng không được hỗ trợ:

Vùng / Đa vùng cho Cloud Firestore và Cloud Storage Vùng gần nhất cho các chức năng
nam5 hoặc us-central (đa vùng) us-central1
eur3 hoặc europe-west (đa vùng) europe-west1
asia-south1 (Mumbai) asia-east2