Cloud Functions là khu vực, nghĩa là cơ sở hạ tầng chạy hàm của bạn nằm ở các khu vực cụ thể và do Google quản lý để có thể hoạt động dư thừa 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 chủ yếu về độ trễ và khả năng hoạt động. Thông thường, bạn có thể chọn các khu vực gần 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 các 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 ở khu vực us-central1. Xin 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ư một bộ chứa Cloud Storage.
Tìm hiểu cách
chỉ định khu vực mà hàm chạy
ở phần sau của trang này.
Khu vực được hỗ trợ
Trong danh sách ở phần này, biểu tượng energy_savings_leaf 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 bài viết Năng lượng không phát thải carbon cho các khu vực của Google Cloud.
Giá ở Cấp 1
Cloud Functions có ở các khu vực sau đây với giá ở Cấp 1:
| Vùng | Vị trí | Các phiên bản sản phẩm được hỗ trợ | Lượng khí thải CO2 |
|---|---|---|---|
africa-south1 |
Johannesburg | Chỉ thế hệ thứ 2 | |
asia-east1 |
Đài Loan | Thế hệ thứ 1, thế hệ thứ 2 | |
asia-east2 |
Hong Kong | Chỉ thế hệ thứ 1 | |
asia-northeast1 |
Tokyo | Thế hệ thứ 1, thế hệ thứ 2 | |
asia-northeast2 |
Osaka | Thế hệ thứ 1, thế hệ thứ 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ệ thứ 1, thế hệ thứ 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ệ thứ 1 | |
us-central1 |
Iowa | Thế hệ thứ 1, thế hệ thứ 2 | energy_savings_leaf |
us-east1 |
South Carolina | Thế hệ thứ 1, thế hệ thứ 2 | |
us-east4 |
Bắc Virginia | Thế hệ thứ 1, thế hệ thứ 2 | |
us-east5 |
Columbus | Chỉ thế hệ thứ 2 | |
us-south1 |
Dallas | Chỉ thế hệ thứ 2 | |
us-west1 |
Oregon | Thế hệ thứ 1, thế hệ thứ 2 | energy_savings_leaf |
Giá ở Cấp 2
Cloud Functions có ở các khu vực sau đây với giá ở Cấp 2:
| Vùng | Vị trí | Các phiên bản sản phẩm được hỗ trợ | Lượng khí thải CO2 |
|---|---|---|---|
asia-east2 |
Hong Kong | Chỉ thế hệ thứ 2 | |
asia-northeast3 |
Seoul | Thế hệ thứ 1, thế hệ thứ 2 | |
asia-southeast1 |
Singapore | Thế hệ thứ 1, thế hệ thứ 2 | |
asia-southeast2 |
Jakarta | Thế hệ thứ 1, thế hệ thứ 2 | |
asia-south1 |
Mumbai | Chỉ thế hệ thứ 2 | |
asia-south2 |
Delhi, Ấn Độ | Chỉ thế hệ thứ 2 | |
australia-southeast1 |
Sydney | Thế hệ thứ 1, thế hệ thứ 2 | |
australia-southeast2 |
Melbourne | Chỉ thế hệ thứ 2 | |
europe-central2 |
Warsaw | Thế hệ thứ 1, thế hệ thứ 2 | |
europe-west2 |
London | Chỉ thế hệ thứ 2 | |
europe-west3 |
Frankfurt | Thế hệ thứ 1, thế hệ thứ 2 | energy_savings_leaf |
europe-west6 |
Zurich | Thế hệ thứ 1, thế hệ thứ 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ệ thứ 1, thế hệ thứ 2 | energy_savings_leaf |
southamerica-west1 |
Santiago, Chile | Chỉ thế hệ thứ 2 | |
us-west2 |
Los Angeles | Thế hệ thứ 1, thế hệ thứ 2 | |
us-west3 |
Thành phố Salt Lake | Thế hệ thứ 1, thế hệ thứ 2 | |
us-west4 |
Las Vegas | Thế hệ thứ 1, thế hệ thứ 2 |
Các hàm trong 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 nhiều khu vực hoặc trên nhiều 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 ở khu vực us-central1. Xin 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ư một bộ chứa Cloud Storage. Nếu bạn cần chỉ định vùng nơi một hàm chạy, hãy làm theo các đề 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 mà hàm chạy, hãy đặt tham số region trong định nghĩa hàm như minh hoạ:
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, xin lưu ý rằng khi chỉ định một khu vực cho nhiều loại trình kích hoạt trong nền, bạn cần chỉ định bộ lọc sự kiện chính xác 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 thay đổi vùng của 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 sản xuất.
Hàm HTTP và hàm có thể gọi từ máy khách
Đối với các hàm HTTP và 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 khu vực gần nhất với nơi hầu hết khách hàng dự kiến cư trú, sau đó thay đổi hàm ban đầu để chuyển hướng yêu cầu HTTP đến hàm mới (các hàm này có thể có cùng tên). Nếu 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 máy khách không xử lý tốt việc chuyển hướng, bạn có thể uỷ quyền 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ả máy khách đều đang 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, các thiết lập có thể gọi từ máy khách phải tuân theo cùng một nguyên tắc như hàm HTTP. Máy khách 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 khu vực trên máy khách, hãy chỉ định khu vực 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 trong nền
Các hàm trong 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, các hàm này 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ó tính chất luỹ đẳng. Nếu hàm của bạn đã có tính chất luỹ đẳng, thì bạn có thể triển khai lại hàm trong khu vực mới bằng cùng một trình kích hoạt sự kiện và xoá hàm cũ sau khi 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 hàm sẽ nhận được các sự kiện. Hãy xem thay đổi vùng của hàm để biết trình tự 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 có tính chất luỹ đẳng hoặc tính chất luỹ đẳng 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 luỹ đẳng trước khi di chuyển hàm.
Các đề xuất về vùng tối ưu khác nhau theo loại điều kiện kích hoạt sự kiện:
| Loại điều kiện kích hoạt | Đề xuất về khu vực |
|---|---|
| Cloud Firestore | Vùng gần nhất với vị trí của thực thể Cloud Firestore (xem phần tiếp theo) |
| Realtime Database | Cùng khu vực với thực thể Realtime Database |
| Cloud Storage | Vùng gần nhất với vị trí của 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 Realtime Database thực thể, một Cloud Firestore
thực thể hoặc một nhóm Cloud Storage bên trong hàm, thì khu vực được đề xuất
cũng giống như khi bạn có một hàm được kích hoạt bởi một trong những tài nguyên
đó. 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
phần tổng quan về dịch vụ lưu trữ không máy chủ để biết các đề xuất. |
Chọn khu vực dựa trên vị trí của Cloud Firestore và Cloud Storage
Các khu vực 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 khu vực có sẵn cho cơ sở dữ liệu Cloud Firestore và nhóm Cloud Storage.
Xin lưu ý rằng nếu hàm và tài nguyên (thực thể cơ sở dữ liệu hoặc Cloud Storage bộ chứa) của bạn ở các vị trí khác nhau, thì bạn có thể gặp phải tình trạng tăng độ trễ và chi phí thanh toán.
Dưới đây là bảng ánh xạ các khu vực gần nhất được hàm hỗ trợ 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 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 |