Cloud Functions là theo khu vực, nghĩa là cơ sở hạ tầng chạy hàm của bạn nằm ở một số khu vực cụ thể và do Google quản lý để có thể cung cấp nhiều hơn mức cần thiết trên tất cả các vùng trong những khu vực đó.
Khi chọn khu vực để chạy hàm, bạn nên cân nhắc đến độ trễ và khả năng sử dụng. Nhìn chung, bạn có thể chọn các khu vực gần với người dùng, nhưng 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 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á.
Theo mặc định, các hàm chạy trong vùng us-central1
. Xin lưu ý rằng khu vực này có thể 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 vùng chạy hàm ở phần sau của trang này.
Khu vực được hỗ trợ
Trong các danh sách ở phần này, biểu tượng energy_savings_leaf cho biết điện năng của khu vực này được sản xuất với lượng khí thải cacbon thấp. Để biết thêm thông tin, hãy xem bài viết Năng lượng miễn phí carbon cho các khu vực trên Google Cloud.
Mức giá cấp 1
Cloud Functions được cung cấp ở các khu vực sau với mức giá theo bậc 1:
Khu vực | Vị trí | Các phiên bản sản phẩm được hỗ trợ | Lượng khí CO2 thải ra |
---|---|---|---|
asia-east1 |
Đài Loan | thế hệ thứ 1, thế hệ thứ 2 | |
asia-east2 |
Hong Kong | Chỉ thế hệ 1 | |
asia-northeast1 |
Tokyo | Thế hệ 1, thế hệ 2 | |
asia-northeast2 |
Osaka | Thế hệ 1, thế hệ 2 | |
europe-north1 |
Phần Lan | Chỉ thế hệ thứ 2 | energy_savings_leaf |
europe-southwest1 |
Madrid | Chỉ thế hệ thứ 2 | |
europe-west1 |
Bỉ | Thế hệ 1, thế hệ 2 | Energy_savings_leaf |
europe-west4 |
Hà Lan | Chỉ thế hệ thứ 2 | |
europe-west8 |
Milan | Chỉ thế hệ thứ 2 | |
europe-west9 |
Paris | Chỉ thế hệ thứ 2 | energy_savings_leaf |
me-west1 |
Tel Aviv | Chỉ thế hệ thứ 2 | |
europe-west2 |
London | Chỉ thế hệ 1 | |
us-central1 |
Iowa | thế hệ thứ 1, thế hệ thứ 2 | energy_savings_leaf |
us-east1 |
Nam Carolina | Thế hệ 1, thế hệ 2 | |
us-east4 |
Bắc Virginia | Thế hệ 1, thế hệ 2 | |
us-east5 |
Columbus | Chỉ thế hệ thứ 2 | |
us-south1 |
Dallas | Chỉ thế hệ thứ 2 | |
us-west1 |
Oregon | Thế hệ 1, thế hệ 2 | Energy_savings_leaf |
Mức giá cấp 2
Cloud Functions được cung cấp ở các khu vực sau với mức giá theo bậc 2:
Khu vực | Vị trí | Các phiên bản sản phẩm được hỗ trợ | Lượng khí CO2 thải ra |
---|---|---|---|
asia-east2 |
Hong Kong | Chỉ thế hệ thứ 2 | |
asia-northeast3 |
Seoul | Thế hệ 1, thế hệ 2 | |
asia-southeast1 |
Singapore | Thế hệ 1, thế hệ 2 | |
asia-southeast2 |
Jakarta | Thế hệ 1, thế hệ 2 | |
asia-south1 |
Mumbai | Chỉ thế hệ thứ 2 | |
asia-south2 |
Delhi, Ấn Độ | Chỉ thế hệ thứ 2 | |
australia-southeast1 |
Sydney | Thế hệ 1, thế hệ 2 | |
australia-southeast2 |
Melbourne | Chỉ thế hệ thứ 2 | |
europe-central2 |
Warsaw | Thế hệ 1, thế hệ 2 | |
europe-west2 |
London | Chỉ thế hệ thứ 2 | |
europe-west3 |
Frankfurt | Thế hệ 1, thế hệ 2 | energy_savings_leaf |
europe-west6 |
Zurich | Thế hệ 1, thế hệ 2 | energy_savings_leaf |
europe-west10 |
Berlin | Chỉ thế hệ thứ 2 | |
europe-west12 |
Turin | Chỉ thế hệ thứ 2 | |
me-central1 |
Doha | Chỉ thế hệ thứ 2 | |
me-central2 |
Dammam | Chỉ thế hệ thứ 2 | |
northamerica-northeast1 |
Montreal | thế hệ thứ 1, thế hệ thứ 2 | Energy_savings_leaf |
northamerica-northeast2 |
Toronto | Chỉ thế hệ thứ 2 | energy_savings_leaf |
southamerica-east1 |
Sao Paulo | Thế hệ 1, thế hệ 2 | energy_savings_leaf |
southamerica-west1 |
Amsterdam, Chile | Chỉ thế hệ thứ 2 | |
us-west2 |
Los Angeles | Thế hệ 1, thế hệ 2 | |
us-west3 |
Salt Lake City | thế hệ thứ 1, thế hệ thứ 2 | |
us-west4 |
Las Vegas | Thế hệ 1, thế hệ 2 |
Các hàm ở một khu vực 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 trên các khu vực hoặc dự án có thể trùng tên.
Các phương pháp hay nhất để chỉ định một khu vực
Theo mặc định, các hàm chạy trong vùng us-central1
. Xin lưu ý rằng khu vực này có thể 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 vùng mà hàm 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 hàm.
Để đặt khu vực mà một 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 khu vực bằng cách truyền nhiều chuỗi khu vực được phân tách bằng dấu phẩy trong region
. Ngoài ra, lưu ý rằng khi chỉ định một khu vực cho nhiều loại điều kiện kích hoạt trong nền, bạn cần chỉ định đúng bộ lọc sự kiện cùng với khu vực đó. Trong ví dụ trên, đây là Cloud Firestore document
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, bộ lọc sự kiện sẽ là topic
, v.v.
Hãy xem phần thay đổi vùng của một hàm để biết thêm thông tin về cách thay đổi vùng cho một hàm đang xử lý lưu lượng truy cập chính thức.
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 của mình thành vùng đích hoặc gần nhất với vị trí của hầu hết khách hàng dự kiến, sau đó thay đổi hàm ban đầu để chuyển hướng yêu cầu HTTP của hàm đó đến hàm mới (các hàm này có thể có cùng tên). Nếu ứng dụng 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 ứng dụng của bạn không xử lý tốt lệnh chuyển hướng, bạn có thể proxy yêu cầu từ hàm ban đầu đến hàm mới bằng cách bắt đầu một yêu cầu mới từ hàm ban đầu đến hàm mới. Bước cuối cùng là đảm bảo rằng tất cả ứng dụng đều 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
Đối với hàm có thể gọi, chế độ thiết lập hàm có thể gọi của ứng dụng phải tuân theo các nguyên tắc giống như hàm HTTP. Ứng dụ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ác ngoài us-central1
.
Để đặt vùng trên ứng dụng, hãy chỉ định vùng mong muốn khi khởi tạo:
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 trong nền
Các hàm trong nền sử 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, các hàm này có thể nhận đượ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 ổn định, thì bạn có thể triển khai lại hàm này trong khu vực mới bằng cùng một điều kiện kích hoạt sự kiện và xoá hàm cũ sau khi xác minh rằng hàm mới 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 đều sẽ nhận được sự kiện. Xem bài viết thay đổi vùng của hàm để biết trình tự các lệnh được đề xuất nhằm thay đổi khu vực cho các hàm.
Nếu hàm của bạn hiện không mang tính chất idempotent hoặc tính chất idempotent của hàm không mở rộng ra ngoài khu vực, thì trước tiên, bạn nên triển khai tính chất idempotent trước khi di chuyển hàm.
Đề xuất về khu vực tối ưu khác nhau tuỳ theo loại trình kích hoạt sự kiện:
Loại trình kích hoạt | Đề xuất theo 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, một thực thể Cloud Firestore hoặc một bộ chứa Cloud Storage bên trong hàm đó, thì khu vực đề xuất sẽ giống như khi bạn có 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 là us-central1 .
Các hàm được kết nối với Firebase Hosting có thể ở bất kỳ khu vực nào, nhưng hãy xem tổng quan về việc lưu trữ không cần máy chủ để biết các đề xuất. |
Chọn khu vực dựa trên vị trí Cloud Firestore và Cloud Storage
Các vùng có sẵn cho hàm 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à các bộ chứa Cloud Storage.
Xin lưu ý rằng nếu hàm và tài nguyê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ể phải chịu độ trễ và chi phí thanh toán cao hơn.
Dưới đây là bản đồ liên kết các vùng được hỗ trợ hàm gần nhất cho Cloud Firestore và Cloud Storage, trong 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 Firestore và Cloud Storage | Khu vực gần nhất cho các hàm |
---|---|
nam5 hoặc us-central (nhiều khu vực) |
us-central1 |
eur3 hoặc europe-west (nhiều khu vực) |
europe-west1 |
europe-west4 (Hà Lan) |
europe-west1 |
asia-south1 (Mumbai) |
asia-east2 |
asia-south2 (Delhi) |
asia-east2 |
australia-southeast2 (Melbourne) |
australia-southeast1 |