gRPC 是由 Google 開發的高效能開放原始碼通用 RPC 架構,可讓您使用通訊協定緩衝區定義服務。您可以使用 gRPC 與 Cloud Storage 互動。gRPC 會在 Compute Engine 執行個體和 Cloud Storage 值區之間建立直接連線,略過 Google Front Ends (GFE)。
您可以使用下列支援的用戶端,透過 gRPC 連線至 Cloud Storage:
Cloud Storage C++、Go 和 Java 用戶端程式庫。如要瞭解如何為這些用戶端程式庫啟用 gRPC,請參閱「在用戶端程式庫上啟用 gRPC」。
Cloud Storage FUSE。您可以透過 Cloud Storage FUSE 設定檔或使用 gcsfuse CLI 的
--client-protocol
選項,在client-protocol
欄位中指定grpc
,將 Cloud Storage FUSE 做為用戶端。如要搭配使用 gRPC 與 Cloud Storage FUSE,建議使用 Cloud Storage FUSE 2.10.0 以上版本。
在用戶端程式庫上啟用 gRPC
C++
事前準備
確認您已安裝下列版本:
gRPC 1.65.1 以上版本
C++ 用戶端程式庫 2.30.0 以上版本
C++ 14 以上版本
如需安裝操作說明,請參閱「設定 C++ 開發環境」。
設定驗證。
請確保每個 Compute Engine 執行個體都附加服務帳戶,即使服務帳戶沒有任何權限也一樣。這個服務帳戶用於代表 應用程式層傳輸安全性 (ALTS) 握手程序中的 Compute Engine 執行個體,且是直接連線的必要條件。
設定 C++ 用戶端程式庫
使用
gcs::MakeGrpcClient()
建立 gRPC 用戶端:namespace gcs = google::cloud::storage; void App() { auto client = gcs::MakeGrpcClient(); // application code }
當 C++ 用戶端程式庫偵測到應用程式在 Google Cloud上執行時,會自動使用直接連線。
如要將 C++ 用戶端程式庫設為使用 gRPC,請啟用 Cloud Storage gRPC 用戶端,更新 CMake 或 Bazel 的建構系統設定。
CMake
在編譯時啟用 Cloud Storage gRPC 用戶端外掛程式。
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]
在程式碼集內,將
target_link_libraries()
指令中的google-cloud-cpp::storage
替換為google-cloud-cpp::storage_grpc
舉例來說,gRPC 的快速入門程式會使用下列程式碼:
add_executable(quickstart_grpc quickstart_grpc.cc) target_link_libraries(quickstart_grpc google-cloud-cpp::storage_grpc)
Bazel
將依附元件從
@google_cloud_cpp//:storage
替換為@google_cloud_cpp//:storage_grpc
。舉例來說,gRPC 的快速入門程式會使用下列程式碼:
cc_binary( name = "quickstart", srcs = [ "quickstart.cc", ], deps = [ "@com_github_googleapis_google_cloud_cpp//:storage_grpc", ], )
Java
事前準備
確認您已安裝下列版本:
Java 用戶端程式庫:
com.google.cloud:google-cloud-storage:2.43.1
以上版本。com.google.cloud:libraries-bom:26.48
以上版本。
Java 8 以上版本
如需安裝說明,請參閱「設定 Java 開發環境」。
設定驗證。
請確保每個 Compute Engine 執行個體都附加服務帳戶,即使服務帳戶沒有任何權限也一樣。這個服務帳戶用於代表 應用程式層傳輸安全性 (ALTS) 握手程序中的 Compute Engine 執行個體,且是直接連線的必要條件。
更新專案以使用 BOM
為確保專案使用相容版本的 Google Cloud 用戶端程式庫,請使用Google Cloud 程式庫物料清單 (BOM) 中指定的版本。如要更新專案以使用 BOM,請採取下列任一做法:
獨立 Cloud Storage
如果您是獨立使用 Cloud Storage 用戶端程式庫 (沒有其他Google Cloud 程式庫),請使用 Cloud Storage 用戶端程式庫專屬的 BOM。
Maven
在 pom.xml
檔案的 dependencyManagement
區段中匯入 BOM。
以下範例說明如何匯入 BOM 並納入 google-cloud-storage
構件。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage-bom</artifactId>
<version>2.43.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
</dependencies>
Gradle
新增 com.google.cloud:google-cloud-storage-bom
的平台依附元件:
implementation platform('com.google.cloud:google-cloud-storage-bom:2.43.1')
implementation 'com.google.cloud:google-cloud-storage'
將 Cloud Storage 與其他 Google Cloud 程式庫搭配使用
如果您同時使用 Cloud Storage 用戶端程式庫和其他 Google Cloud 程式庫,請使用 Google Cloud 用戶端程式庫 BOM。
Maven
在 pom.xml
檔案的 dependencyManagement
區段中匯入 BOM。
以下範例說明如何匯入 BOM 並納入 libraries-bom
構件。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>26.48.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
</dependencies>
Gradle
新增 com.google.cloud:libraries-bom
的平台依附元件:
implementation platform('com.google.cloud:libraries-bom:26.48.0')
implementation 'com.google.cloud:google-cloud-storage'
建立 gRPC 用戶端
下列範例使用以 gRPC 為中心的建構工具。當 gRPC Java 用戶端偵測到應用程式在 Google Cloud上執行時,會自動使用直接連線。
Go
事前準備
請務必使用 Cloud Storage Go 用戶端程式庫 1.46.0 以上版本。
設定驗證。
請確保每個 Compute Engine 執行個體都附加服務帳戶,即使服務帳戶沒有任何權限也一樣。這個服務帳戶用於代表 應用程式層傳輸安全性 (ALTS) 握手程序中的 Compute Engine 執行個體,且是直接連線的必要條件。
建立 gRPC 用戶端
如要使用用戶端,您需要在應用程式中呼叫 NewGRPCClient
建構函式,而不是 NewClient
。
Go 用戶端程式庫偵測到應用程式在 Google Cloud上執行時,會自動使用直接連線。
如要瞭解如何使用 gRPC 用戶端,請參閱 gRPC API。
設定 VPC Service Controls
如果您使用虛擬私有雲搭配受限的虛擬 IP 位址 (VPC Service Controls) 來提升網路安全性,則需要更新防火牆規則,以直接連線,確保 Compute Engine 執行個體和 Cloud Storage 值區之間的效能達到最佳狀態。
如要這麼做,請新增允許清單防火牆規則,允許下列 CIDR 區塊的所有通訊埠傳輸流量:
- IPv4 流量:
34.126.0.0/18
- IPv6 流量:
2001:4860:8040::/42
除了上述規則外,請保留 199.36.153.4/30
的現有允許清單規則。
如果無法修改防火牆規則,可以強制流量避開直接連線,方法是使用 storage.googleapis.com
做為 Cloud Storage 端點,而不是 google-c2p://storage.googleapis.com
。
舉例來說,如果是 C++,請使用 .set<google::cloud::EndpointOption>(storage.googleapis.com)
,而不是 google-c2p:///storage.googleapis.com
。
啟用 gRPC 相關要求的觀測功能
您可以設定 Cloud Storage 用戶端程式庫,在 Cloud Monitoring 中產生 gRPC 相關指標。gRPC 相關指標可協助您執行下列操作:
監控及最佳化傳送至 Cloud Storage 的 gRPC 要求效能。
排解及偵錯問題。
深入瞭解應用程式的使用情形和行為。
如要瞭解如何產生 gRPC 相關指標,請參閱「使用用戶端指標」。
如果您的用途不需要收集指標,可以選擇停用指標收集功能。如需操作說明,請參閱「停用用戶端指標」。
限制
無法透過舊版網路傳送 IPv6 要求。
在僅限 IPv4 的叢集上使用下列 GKE 版本時,系統不支援直接連線:
- 1.28、1.28.0-gke.100 以上版本,直到 1.28.5-gke.1199000
- 1.27、1.27.4-gke.1900 以上版本
- 1.26、1.26.10-gke.1238000 以上版本
- 1.25、1.25.15-gke.1045000 以上版本
gRPC 不支援
notifications
、hmacKeys
和serviceAccount
方法。Go 用戶端程式庫不支援 HTTP 專用的用戶端建構函式選項,例如 WithHTTPClient。
排解直接連線問題
如要瞭解如何檢查直接連線,以及在無法使用時排解問題,請參閱「直接連線」一文。