Vị trí Cloud Functions

Cloud Functions mang tính theo khu vực, nghĩa là cơ sở hạ tầng chạy được đặt ở những khu vực cụ thể và được Google quản lý để có sẵn trên tất cả các vùng thuộc những khu vực đó.

Khi chọn những khu vực để chạy các hàm, các yếu tố cần cân nhắc là độ trễ và khả năng sử dụng. Bạn có thể thường chọn những khu vực gần người dùng của bạn, nhưng bạn Bạn cũng nên cân nhắc 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 các dịch vụ ở nhiều khu vực có thể ảnh hưởng độ trễ của ứng dụng, cũng như giá.

Theo mặc định, các hàm chạy trong vùng us-central1. Xin lưu ý rằng đây có thể là khác với khu vực của nguồn sự kiện, chẳng hạn như bộ chứa Cloud Storage. Tìm hiểu cách chỉ định khu vực chạy hàm ở phần sau của trang này.

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

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

Cloud Functions có mặt ở những khu vực sau đây với Giá cấp 1:

  • asia-east1 (Đài Loan)
  • Chỉ asia-east2 (Hong Kong) thế hệ 1
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Phần Lan) tiết_ kiệm năng lượng_lá Chỉ thế hệ thứ 2
  • europe-west1 (Bỉ) tiết_ kiệm năng lượng_lá
  • Chỉ europe-west2 (London) thế hệ 1
  • us-central1 (Iowa) tiết_ kiệm năng lượng_lá
  • us-east1 (Nam Carolina)
  • us-east4 (Bắc Virginia)
  • us-west1 (Oregon) tiết_ kiệm năng lượng_lá

Cloud Functions có mặt ở những khu vực sau đây với Giá cấp 2:

  • Chỉ asia-east2 (Hong Kong) thế hệ thứ 2
  • asia-northeast3 (Seoul)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Jakarta)
  • Chỉ asia-south1 (Mumbai) thế hệ thứ 2
  • australia-southeast1 (Sydney)
  • Chỉ australia-southeast2 (Melbourne) thế hệ thứ 2
  • europe-central2 (Waraw)
  • Chỉ europe-west2 (London) thế hệ thứ 2
  • europe-west3 (Frankfurt)
  • europe-west6 (Zurich) tiết_ kiệm năng lượng_lá
  • northamerica-northeast1 (Montreal) tiết_ kiệm năng lượng_lá
  • northamerica-northeast2 (Toronto) tiết_ kiệm năng lượng_lá Chỉ thế hệ thứ 2
  • southamerica-east1 (Sao Paulo) tiết_ kiệm năng lượng_lá
  • Chỉ dành cho thế hệ thứ 2 ở southamerica-west1 (San Diego, Chile)
  • us-west2 (Los Angeles)
  • us-west3 (Thành phố Salt Lake)
  • us-west4 (Las Vegas)

Các hàm ở một vùng nhất định trong một dự án nhất định phải có giá trị duy nhất (chữ hoa không nhạy cảm), nhưng các chức năng giữa các khu vực hoặc nhiều dự án có thể dùng chung cùng một 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. Xin lưu ý rằng đây có thể là khác với khu vực của nguồn sự kiện, chẳng hạn như bộ chứa Cloud Storage. Nếu bạn cần chỉ định khu vực nơi hàm chạy, hãy làm theo đề xuất trong phần này cho từng loại điều kiện kích hoạt hàm.

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

Xem thay đổi vùng của hàm để biết thêm thông tin về việc thay đổi khu vực cho một hàm xử lý lưu lượng truy cập thực tế.

HTTP và các hàm có thể gọi của máy khách

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

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

Về chức năng có thể gọi, cách thiết lập chức năng có thể gọi của ứng dụng khách phải giống như dưới dạng các hàm 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 hàm chạy ở bất kỳ khu vực nào không phải us-central1.

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

Swift

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

Unity

firebase.Functions.FirebaseFunctions functions;

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

Hàm nền

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

Nếu hàm của bạn hiện không ổn định hoặc giá trị không thay đổi mở rộng ra ngoài khu vực này, thì trước tiên bạn nên triển khai giá trị không đổi trước khi di chuyển hàm.

Các đề xuất tối ưu về khu vực sẽ khác nhau tuỳ theo loại điều kiện kích hoạt sự kiện:

Loại trình kích hoạt Đề xuất về khu vực
Cloud Firestore Khu vực gần nhất với vị trí thực thể Cloud Firestore (xem phần tiếp theo)
Realtime Database Luôn là us-central1
Cloud Storage Khu vực gần nhất với vị trí bộ chứa Cloud Storage (xem phần tiếp theo)
Thiết bị khác Nếu bạn đang tương tác với một thực thể Realtime Database, Cloud Firestore hoặc một nhóm Cloud Storage bên trong hàm này, thì thuộc tính khu vực cũng giống như thể bạn có một hàm được kích hoạt bởi một trong những của chúng tôi. Nếu không, hãy sử dụng khu vực mặc định là us-central1. Các hàm được kết nối với Firebase Hosting có thể ở bất kỳ vùng nào, nhưng hãy xem thông tin tổng quan về dịch vụ lưu trữ không máy chủ để biết các đề xuất.

Đang chọn các khu vực dựa trên Cloud FirestoreCloud Storage vị trí

Vùng có sẵn cho các hàm không phải lúc nào cũng khớp chính xác với các khu vực có sẵn cho cơ sở dữ liệu Cloud FirestoreCloud Storage của bạn .

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

Sau đây là bản đồ ánh xạ các khu vực được hỗ trợ các hàm gần nhất cho Cloud FirestoreCloud Storage, đối với các trường hợp không hỗ trợ cùng một khu vực:

Khu vực/Nhiều khu vực cho Cloud FirestoreCloud Storage Khu vực gần nhất cho các hàm
nam5 hoặc us-central (nhiều vùng) us-central1
eur3 hoặc europe-west (nhiều 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