設定連線集區
部分 Cloud Bigtable 用戶端程式庫可讓您設定用戶端連線集區中的 gRPC 管道數量,也就是管道集區。在大多數情況下,預設設定都是正確的,因此不需要變更。
使用 Java 適用的 Cloud Bigtable 用戶端程式庫 2.23.0 以上版本,以及 Java 適用的 Cloud Bigtable HBase 用戶端 2.9.1 以上版本時,連線集區會視需要自動調整大小。
本頁說明如何為應用程式判斷最佳連線集區大小,並提供程式碼片段,說明如何設定連線集區。
閱讀本頁面之前,請先參閱 Bigtable 連線集區總覽,瞭解連線集區的運作方式,以及是否應變更連線集區。
下列用戶端程式庫提供連線集區功能,可讓您設定集區數量:
- Cloud Bigtable 適用的 Go 用戶端程式庫
- 適用於 Java 的 Cloud Bigtable HBase 用戶端
- Java 適用的 Cloud Bigtable 用戶端程式庫
- Cloud Bigtable C++ 用戶端程式庫
判斷最佳連線集區大小
理想情況下,為了預留流量波動空間,連線集區的連線數量約為達到飽和狀態所需連線數的兩倍。由於每個連線最多可處理 100 個並行要求,因此每個連線的待處理要求數介於 10 到 50 個之間最為理想。如要進一步瞭解這個概念,請參閱「連線集區」。
變更後請監控流量,並視需要調整集區中的連線數。
下列步驟有助於使用用戶端指標 (例如 OpenCensus 提供的指標) 計算管道集區的最佳連線數。
- 從用戶端指標收集下列資訊:
- 應用程式執行一般工作負載時,每個用戶端每秒可執行的查詢數上限 (QPS)。
- 以毫秒為單位的平均延遲時間 (單一要求的回應時間)。
- 將 1,000 除以平均延遲值,即可判斷每秒可連續傳送的要求數。
- 將每秒 QPS 除以每秒連續要求數。
- 將結果除以每個管道 50 項要求,即可判斷最佳管道集區大小下限。(如果計算結果小於 2,請至少使用 2 個頻道,確保有備援機制)。
- 將相同結果除以每個管道 10 個要求,即可判斷最佳管道集區大小上限。
這些步驟可表示為下列方程式:
(每秒查詢次數 ÷ (1,000 ÷ 延遲時間 (毫秒))) ÷ 50 個串流 = 最少最佳連線數
(每秒查詢次數 ÷ (1,000 ÷ 延遲時間 (毫秒))) ÷ 10 個串流 = 最佳連線數量上限
範例
您的應用程式通常每秒會傳送 50,000 個要求,平均延遲時間為 10 毫秒。將 1,000 除以 10 毫秒,即可判斷每秒可連續傳送 100 個要求。將該數字除以 50,000,即可得出傳送 50,000 QPS 時所需的平行處理量:500。每個頻道最多可同時發出 100 個要求,目標頻道使用率介於 10 到 50 個並行串流之間。因此,如要計算最小值,請將 500 除以 50,得出 10。如要找出上限,請將 500 除以 10,得出 50。也就是說,這個範例的管道集區大小應介於 10 到 50 個連線之間。
設定泳池長度
下列程式碼範例示範如何在用戶端程式庫中設定集區數量,以便設定集區大小。
Go
HBase
這個範例僅適用於 2.9.1 之前的用戶端程式庫版本,因為自動調整大小功能是在 2.9.1 版推出。
Java
這個範例僅適用於 2.23.0 之前的用戶端程式庫版本,因為自動調整大小功能是在 2.23.0 版推出。