Cloud Functions mang tính 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ụ trên 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 một 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 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 lá_tiết_niệm_năng_lượng 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 hiện có ở 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) lá_tiết_niệm_năng_lượng Chỉ thế hệ thứ 2europe-west1
(Bỉ) lá_tiết_niệm_năng_lượng- Chỉ
europe-west2
(London) thế hệ 1 us-central1
(Iowa) lá_tiết_niệm_năng_lượngus-east1
(Nam Carolina)us-east4
(Bắc Virginia)us-west1
(Oregon) lá_tiết_niệm_năng_lượng
Cloud Functions hiện có ở 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) lá_tiết_niệm_năng_lượngnorthamerica-northeast1
(Montreal) lá_tiết_niệm_năng_lượngnorthamerica-northeast2
(Toronto) lá_tiết_niệm_năng_lượng Chỉ thế hệ thứ 2southamerica-east1
(Sao Paulo) lá_tiết_niệm_năng_lượng- 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 một 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 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à document
của Cloud Firestore
phát ra sự kiện đó. Đối với 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 đồng đều, 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í của thực thể Cloud Firestore (xem phần tiếp theo) |
Cơ sở dữ liệu theo thời gian thực | Luôn là us-central1 |
Cloud Storage | Khu vực gần nhất với vị trí bộ chứa trong 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 phiên bản của Cơ sở dữ liệu theo thời gian thực, Cloud Firestore
hoặc một bộ chứa Cloud Storage bên trong hàm, 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 Lưu trữ Firebase có thể ở bất kỳ khu vực nào, nhưng hãy xem
tổng quan về mô hình lưu trữ không máy chủ để biết các đề xuất. |
Chọn các khu vực dựa trên vị trí trong Cloud Firestore và Cloud Storage
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 hiện có cho cơ sở dữ liệu Cloud Firestore và Cloud 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 đồ liên kết các khu vực được hỗ trợ các hàm gần nhất cho Cloud Firestore và Cloud Storage, đối với những trường hợp không hỗ trợ cùng một khu vực:
Khu vực/đa 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 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 |