O gRPC é um framework de RPC universal de código aberto e de alto desempenho desenvolvido pela Google que pode usar para definir os seus serviços através de Protocol Buffers. Pode usar o gRPC para interagir com o Cloud Storage. O gRPC usa a conetividade direta entre instâncias do Compute Engine e contentores do Cloud Storage, ignorando os front-ends da Google (GFEs).
Pode estabelecer ligação ao Cloud Storage através de gRPC com os seguintes clientes suportados:
Conetor Apache Beam I/O no Dataflow para pedidos de leitura e escrita.
Bibliotecas cliente C++, Go e Java do Cloud Storage. Para ver instruções sobre como ativar o gRPC para estas bibliotecas cliente, consulte o artigo Ative o gRPC na biblioteca cliente.
Cloud Storage FUSE. Pode usar o Cloud Storage FUSE como cliente especificando
grpc
no campoclient-protocol
através de um ficheiro de configuração do Cloud Storage FUSE ou da opção--client-protocol
através da CLI do Cloud Storage FUSE. Para usar o gRPC com o Cloud Storage FUSE, recomendamos que use as versões 2.10.0 ou mais recentes do Cloud Storage FUSE.
Ative o gRPC numa biblioteca de cliente
C++
Antes de começar
Certifique-se de que tem as seguintes versões instaladas:
Versão 1.65.1 ou posterior do gRPC
Versão v2.30.0 ou posterior da biblioteca cliente de C++
Versão 14 ou posterior do C++
Para ver instruções de instalação, consulte o artigo Configurar um ambiente de desenvolvimento C++.
Certifique-se de que cada instância do Compute Engine tem uma conta de serviço associada, mesmo que a conta de serviço não tenha autorizações. Esta conta de serviço é usada para representar a instância do Compute Engine no processo de handshake da segurança de transporte da camada de aplicação (ALTS) e é necessária para a conetividade direta.
Configure a biblioteca de cliente C++
Crie um cliente gRPC com
gcs::MakeGrpcClient()
:namespace gcs = google::cloud::storage; void App() { auto client = gcs::MakeGrpcClient(); // application code }
A biblioteca de cliente C++ usa automaticamente a conetividade direta quando deteta que a aplicação está a ser executada no Trusted Cloud by S3NS.
Para configurar a biblioteca de cliente C++ para usar o gRPC, ative o cliente gRPC do Cloud Storage para atualizar a configuração do sistema de compilação para o CMake ou o Bazel.
CMake
Ative o plug-in do cliente gRPC do Cloud Storage no momento da compilação.
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]
Na sua base de código, para o comando
target_link_libraries()
, substituagoogle-cloud-cpp::storage
porgoogle-cloud-cpp::storage_grpc
Por exemplo, o programa de início rápido para gRPC usa o seguinte código:
add_executable(quickstart_grpc quickstart_grpc.cc) target_link_libraries(quickstart_grpc google-cloud-cpp::storage_grpc)
Bazel
Substitua as dependências de
@google_cloud_cpp//:storage
por@google_cloud_cpp//:storage_grpc
.Por exemplo, o programa de início rápido para gRPC usa o seguinte código:
cc_binary( name = "quickstart", srcs = [ "quickstart.cc", ], deps = [ "@com_github_googleapis_google_cloud_cpp//:storage_grpc", ], )
Java
Antes de começar
Certifique-se de que tem as seguintes versões instaladas:
Bibliotecas cliente Java:
com.google.cloud:google-cloud-storage:2.43.1
ou posterior.com.google.cloud:libraries-bom:26.48
ou posterior.
Java 8 ou posterior
Para ver instruções de instalação, consulte o artigo Configurar um ambiente de desenvolvimento Java.
Certifique-se de que cada instância do Compute Engine tem uma conta de serviço associada, mesmo que a conta de serviço não tenha autorizações. Esta conta de serviço é usada para representar a instância do Compute Engine no processo de handshake da segurança de transporte da camada de aplicação (ALTS) e é necessária para a conetividade direta.
Atualize o seu projeto para usar a BOM
Para garantir que os seus projetos têm versões compatíveis das Trusted Cloud by S3NS bibliotecas de cliente, use as versões especificadas na Trusted Cloud by S3NS lista de materiais (BOM) das bibliotecas. Para atualizar o seu projeto para usar a BOM, use qualquer um dos seguintes métodos:
Cloud Storage autónomo
Se estiver a usar a biblioteca cliente do Cloud Storage de forma independente (sem outras bibliotecas), use a BOM específica da biblioteca cliente do Cloud Storage.Trusted Cloud by S3NS
Maven
Importe a BOM na secção dependencyManagement
do ficheiro pom.xml
.
O exemplo seguinte mostra como importar a BOM e incluir o artefacto 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
Adicione uma dependência de plataforma em 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'
Armazenamento na nuvem com outras Trusted Cloud bibliotecas
Se estiver a usar a biblioteca cliente do Cloud Storage juntamente com outras bibliotecas Trusted Cloud , use a BOM das bibliotecas Trusted Cloud cliente.
Maven
Importe a BOM na secção dependencyManagement
do ficheiro pom.xml
.
O exemplo seguinte mostra como importar a BOM e incluir o artefacto 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
Adicione uma dependência de plataforma em com.google.cloud:libraries-bom
:
implementation platform('com.google.cloud:libraries-bom:26.48.0')
implementation 'com.google.cloud:google-cloud-storage'
Crie um cliente gRPC
O exemplo seguinte usa um criador centrado no gRPC. O cliente Java gRPC usa automaticamente a conetividade direta quando deteta que a aplicação está a ser executada no Trusted Cloud.
Go
Antes de começar
Certifique-se de que usa a versão 1.46.0 ou posterior da biblioteca de cliente Go do Cloud Storage.
Certifique-se de que cada instância do Compute Engine tem uma conta de serviço associada, mesmo que a conta de serviço não tenha autorizações. Esta conta de serviço é usada para representar a instância do Compute Engine no processo de handshake da segurança de transporte da camada de aplicação (ALTS) e é necessária para a conetividade direta.
Crie um cliente gRPC
Para usar o cliente, tem de chamar o construtor NewGRPCClient
na sua aplicação em vez de NewClient
.
A biblioteca de cliente Go usa automaticamente a conetividade direta quando deteta que a aplicação está a ser executada no Trusted Cloud.
Para obter informações sobre como usar um cliente gRPC, consulte a API gRPC.
Configure os VPC Service Controls
Se estiver a usar a nuvem virtual privada com endereços IP virtuais restritos (VPC Service Controls) para melhorar a segurança da sua rede, tem de atualizar as regras da firewall para ativar a conetividade direta para um desempenho ideal entre a sua instância do Compute Engine e o contentor do Cloud Storage.
Para tal, adicione regras de firewall da lista de autorizações para permitir o tráfego em todas as portas para os seguintes blocos CIDR:
- Para tráfego IPv4:
34.126.0.0/18
- Para tráfego IPv6:
2001:4860:8040::/42
Além das regras anteriores, mantenha a regra da lista de autorizações existente para
199.36.153.4/30
.
Se tiver restrições nas modificações das regras da firewall e não as puder atualizar, pode forçar o tráfego a evitar a conetividade direta usando storage.googleapis.com
como o ponto final do Cloud Storage em vez de google-c2p://storage.googleapis.com
.
Por exemplo, para usar C++, use .set<google::cloud::EndpointOption>(storage.googleapis.com)
em vez de google-c2p:///storage.googleapis.com
.
Ative a observabilidade para pedidos relacionados com gRPC
Pode configurar as bibliotecas de cliente do Cloud Storage para gerar métricas relacionadas com gRPC no Cloud Monitoring. As métricas relacionadas com gRPC podem ajudar a fazer o seguinte:
Monitorize e otimize o desempenho dos pedidos gRPC para o Cloud Storage.
Resolva e depure problemas.
Obtenha estatísticas sobre a utilização e o comportamento da sua aplicação.
Para ver informações sobre como gerar métricas relacionadas com gRPC, consulte o artigo Use métricas do lado do cliente.
Se a recolha de métricas não for necessária para o seu exemplo de utilização, pode optar por não participar na recolha de métricas. Para ver instruções, consulte o artigo Desative as métricas do lado do cliente.
Limitações
Não é possível enviar pedidos IPv6 através de redes antigas.
A conetividade direta não é suportada quando usa as seguintes versões do GKE em clusters apenas IPv4:
- 1.28, 1.28.0-gke.100 ou posterior até 1.28.5-gke.1199000
- 1.27, 1.27.4-gke.1900 ou posterior
- 1.26, 1.26.10-gke.1238000 ou posterior
- 1.25, 1.25.15-gke.1045000 ou posterior
O gRPC não suporta os métodos
notifications
,hmacKeys
eserviceAccount
.As opções de construtor de cliente específicas de HTTP, como WithHTTPClient, não são suportadas para a biblioteca de cliente Go.
A API gRPC não é compatível com pontos finais regionais.
Resolução de problemas de conetividade direta
Para saber como verificar a conetividade direta e resolver problemas quando não está disponível, consulte o artigo Conetividade direta.
O que se segue?
- Ligue-se ao conetor do Cloud Storage no Dataproc através do gRPC.
- Ative o gRPC no conetor Apache Beam I/O no Dataflow.