我们在Kubernetes集群部署中运行了一个Java应用程序。我们正在使用Google Cloud Bucket作为存储。我们正在使用Java Files.move方法将文件从持久卷声明(PVC)移至存储桶:
import java.nio.file.Files;
Files.move(source, target, StandardCopyOption.REPLACE_EXISTING)
但是我们的写入性能越来越差。因此,我们尝试探索Google Cloud Storage API将文件从PVC移到存储桶中。
try {
log.info("before getService");
Storage storage = StorageOptions.newBuilder()
.setCredentials(GoogleCredentials.create(aToken)).build()
.getService();
// aToken is the access token of the service account
log.info("after getService");
} catch (Exception e) {
log.error("Error while creating storage object - ", e);
}
但仅记录“ before getService”。在那之后什么也没有发生。没有异常被抛出。该过程陷入了getService()
同一应用程序可以在Google Storage Bucket的本地部署中使用,但不适用于Kubernetes部署。
答案 0 :(得分:1)
对我来说,更新Google Storage API的版本可以解决此问题。在我的Gradle构建文件中,我使用的是1.36,切换到1.42后,它运行良好。
答案 1 :(得分:0)
问题是由于pom.xml中的api版本号(我们正在使用Maven)引起的。在pom.xml中对版本1.23.0进行更改可以解决该问题。
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client</artifactId>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.23.0</version>
</dependency>