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

Cloud Functions mang tính khu vực , có nghĩa là cơ sở hạ tầng chạy Chức năng đám mây của bạn được đặt tại các khu vực cụ thể và được Google quản lý để có sẵn dự phòng trên tất cả các khu vực trong các khu vực đó .

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

Các khu vực được hỗ trợ

Trong các danh sách ở phần này, biểu tượng lá_tiết kiệm năng lượng cho biết điện cho khu vực này được sản xuất với lượng khí thải carbon thấp. Để biết thêm thông tin, hãy xem Năng lượng không có carbon cho các khu vực trên Google Cloud .

Chức năng đám mây có sẵn ở các khu vực sau với mức giá Cấp 1 :

  • asia-east1 (Đài Loan)
  • asia-east2 (Hồng Kông) chỉ thế hệ 1
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Phần Lan) energy_ Savings_leaf chỉ thế hệ thứ 2
  • europe-west1 (Bỉ) energy_ Savings_leaf
  • europe-west2 (London) chỉ thế hệ 1
  • us-central1 (Iowa) energy_ Savings_leaf
  • us-east1 (Nam Carolina)
  • us-east4 (Bắc Virginia)
  • us-west1 (Oregon) energy_ Savings_leaf

Chức năng đám mây có sẵn ở các khu vực sau với mức giá Cấp 2 :

  • asia-east2 (Hồng Kông) chỉ thế hệ thứ 2
  • asia-northeast3 (Seoul)
  • asia-southeast1 (Singapo)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai) chỉ thế hệ thứ 2
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne) chỉ thế hệ thứ 2
  • europe-central2 (Warsaw)
  • europe-west2 (London) chỉ thế hệ thứ 2
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurich) energy_ Savings_leaf
  • northamerica-northeast1 (Montreal) energy_ Savings_leaf
  • northamerica-northeast2 (Toronto) energy_ Savings_leaf chỉ thế hệ thứ 2
  • southamerica-east1 (Sao Paulo) energy_ Savings_leaf
  • southamerica-west1 (Santiago, Chile) chỉ thế hệ thứ 2
  • us-west2 (Los Angeles)
  • us-west3 (Thành phố Salt Lake)
  • us-west4 (Las Vegas)

Các hàm 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 hàm 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 để chỉ định khu vực

Theo mặc định, các hàm chạy trong vùng us-central1 . Lưu ý rằng điều này có thể khác với khu vực của nguồn sự kiện, chẳng hạn như nhóm Lưu trữ đám mây. Nếu bạn cần chỉ định khu vực chạy chức năng, 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.

Để đặt vùng nơi hàm chạy, hãy đặt tham số region trong định nghĩa hàm như sau:

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Python

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

Bạn có thể chỉ định nhiều vùng bằng cách chuyển nhiều chuỗi vùng được phân tách bằng dấu phẩy trong region . Cũng xin lưu ý rằng khi chỉ định một vùng cho nhiều loại trình kích hoạt nền, bạn sẽ cần chỉ định bộ lọc sự kiện chính xác cùng với vùng đó. Trong ví dụ trên, đây là document Cloud Firestore phát ra sự kiện. Đối với trình kích hoạt Cloud Storage, bộ lọc sự kiện có thể là bucket ; đối với trình kích hoạt Pub/Sub, nó sẽ là topic , v.v.

Xem thay đổi vùng của hàm để biết thêm thông tin về cách thay đổi vùng cho hàm đang xử lý lưu lượng sản xuất.

Các hàm HTTP và ứng dụng khách có thể gọi được

Đối với các hàm HTTP và có thể gọi, trước tiên bạn nên đặt hàm của mình thành khu vực đích hoặc gần nhất với nơi có nhiều khách hàng mong đợi nhất, sau đó thay đổi hàm ban đầu của bạn để chuyển hướng yêu cầu HTTP của hàm đó sang hàm mới (chúng có thể có cùng một chức năng). tên). Nếu các máy khách của hàm HTTP hỗ trợ chuyển hướng, bạn chỉ cần thay đổi hàm ban đầu để trả về trạng thái chuyển hướng HTTP (301) cùng với URL của hàm mới. Nếu khách hàng của bạn không xử lý tốt các chuyển hướng, bạn có thể ủy quyền yêu cầu từ chức năng ban đầu sang 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 sang chức năng mới. Bước cuối cùng là đảm bảo rằng tất cả khách hàng đ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 được

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

Để đặt 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")

Mục tiêu-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");

Chức năng nền

Các hàm nền áp dụng ngữ nghĩa phân phối sự kiện ít nhất một lần, 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 triển khai các hàm để được idempotent . Nếu hàm của bạn đã bình thường thì bạn có thể triển khai lại hàm trong vùng mới bằng 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 chính xác. Trong quá trình chuyển đổi này, cả hai chức năng sẽ nhận được sự kiện. Xem thay đổi vùng của hàm để biết chuỗi lệnh được đề xuất nhằm thay đổi vùng cho hàm.

Nếu hàm của bạn hiện không ở trạng thái lũy đẳng hoặc trạng thái lũy đẳng 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 tính lũy đẳng trước khi di chuyển hàm.

Các đề xuất 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 Khuyến nghị khu vực
Cửa hàng đám mây Vùng 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 us-central1
Lưu trữ đám mây Vùng gần nhất với vị trí nhóm Cloud Storage (xem phần tiếp theo)
Người khác Nếu bạn đang tương tác với một phiên bản Cơ sở dữ liệu thời gian thực, phiên bản Cloud Firestore hoặc nhóm Cloud Storage bên trong hàm thì vùng được đề xuất sẽ 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, hãy sử dụng vùng mặc định của us-central1 . Các chức năng được kết nối với Firebase Hosting có thể có ở bất kỳ khu vực nào, nhưng hãy xem tổng quan về dịch vụ lưu trữ không có máy chủ để biết các đề xuất.

Chọn vùng dựa trên vị trí Cloud Firestore và Cloud Storage

Các vùng có sẵn 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 Cloud Storage của bạn.

Lưu ý rằng nếu chức năng và tài nguyên của bạn (phiên bản cơ sở dữ liệu hoặc bộ chứa Cloud Storage) ở các vị trí khác nhau thì bạn có thể gặp phải tình trạng độ trễ và chi phí thanh toán tăng lên.

Dưới đây là ánh xạ các vùng được hỗ trợ chức năng gần nhất cho Cloud Firestore và Cloud Storage, đối với các 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 Khu vực chức năng gần nhất
nam5 hoặc us-central (đa vùng) us-central1
eur3 hoặc europe-west (đa vùng) europe-west1
europe-west4 (Hà Lan) europe-west1
asia-south1 (Mumbai) asia-east2
asia-south2 (Delhi) asia-east2
australia-southeast2 (Melbourne) australia-southeast1