gRPC 是由 Google 開發的高效能開放原始碼通用 RPC 架構,可讓您使用 Protocol Buffers 定義服務。您可以使用 gRPC 與 Cloud Storage 互動。gRPC 會利用 Compute Engine 執行個體與 Cloud Storage 值區之間的直接連線,略過 Google 前端 (GFE)。
您可以透過下列支援的用戶端,使用 gRPC 連線至 Cloud Storage:
Cloud Storage C++、Go 和 Java 用戶端程式庫。如要瞭解如何為這些用戶端程式庫啟用 gRPC,請參閱「在用戶端程式庫中啟用 gRPC」。
Cloud Storage FUSE。如要將 Cloud Storage FUSE 用於客戶端,請使用 Cloud Storage FUSE 設定檔在
client-protocol
欄位中指定grpc
,或是使用 gcsfuse CLI 在--client-protocol
標記中指定grpc
。
在用戶端程式庫中啟用 gRPC
C++
事前準備
請確認已安裝下列版本:
gRPC 1.65.1 以上版本
C++ 用戶端程式庫第 2.30.0 版以上
C++ 14 以上版本
如需安裝操作說明,請參閱「設定 C++ 開發環境」。
設定 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 開發環境」。
更新專案以使用 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 以上版本。
建立 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。
如要建立直接連線,Compute Engine 執行個體必須已繫結服務帳戶,即使服務帳戶沒有權限也一樣。這個服務帳戶會用於在 Application Layer Transport Security 握手程序中代表 Compute Engine 執行個體。
排解直接連線可用性問題
如要判斷是否可使用直接連線方式連線至 Cloud Storage 值區,請使用 Google Cloud CLI 執行 gcloud alpha storage diagnose
。
gcloud alpha storage diagnose --test-type=DIRECT_CONNECTIVITY gs://BUCKET_NAME
更改下列內容:
BUCKET_NAME
:值區名稱。