美妙的GCP:Spring Cloud Google Cloud Platform入门 (1/8)

工程 | Josh Long | 2018年8月20日 | ...

嗨,Spring 粉丝们!在这个简短的八部分系列文章中,我们将介绍用于 Google Cloud Platform 的 Spring Cloud 集成,称为 Spring Cloud GCP。Spring Cloud GCP 代表了 Google 和 Pivotal 之间的共同努力,旨在为使用 Google Cloud Platform 的 Spring Cloud 开发人员提供一流的体验。Pivotal Cloud Foundry 用户将享受更轻松与 GCP 服务代理集成。我撰写这些部分时参考了 Google Cloud 开发者倡导者,我的朋友,Ray Tsang的意见。您还可以在我们的 Google Next 2018 会议上观看 Spring Cloud GCP 的演练,Bootiful Google Cloud Platform。感谢老兄!一如既往,如果您有任何反馈,我很乐意听到您的声音

本系列共有八篇文章。以下是所有文章:

](https://springframework.org.cn/blog/2018/09/06/bootiful-gcp-supporting-observability-with-spring-cloud-gcp-stackdriver-trace-6-8)

  • [美妙的GCP:使用 Spring Cloud GCP 连接到其他 GCP 服务 (7/8)

](https://springframework.org.cn/blog/2018/09/10/bootiful-gcp-use-spring-cloud-gcp-to-connect-to-other-gcp-services-7-8)

在本节中,我们将介绍 Spring Cloud GCP,然后使用 Spring Cloud GCP 设置一个简单的项目。

Google Cloud Platform 非常庞大!它拥有大量功能。但是其他平台也是如此。那么,为什么选择 Google Cloud Platform 呢?我认为使用 GCP 有两个主要原因。首先,Google 的数据中心无疑是世界上最先进的,其运营能力首屈一指。让 Google 运营和保护您的数据中心。除此之外,Google 不得不解决一些在其规模上令人惊叹的问题,通过 GCP,我们可以从 GCP 上的这些发展中受益。独特于 Google 的数据服务是传奇的。Google 的 TensorFlow,例如,代表了机器学习的尖端技术,GCP 甚至提供了对专门的专用集成电路 (ASIC) *张量处理单元 (TPU)* 的访问,这些单元经过优化以运行 TensorFlow 工作负载。Google 的 Spanner 是唯一一款为云专门构建的企业级、全球分布式且强一致性的数据库服务,它结合了关系数据库结构和非关系水平扩展的优势。

身份验证

您需要注册一个GCP 帐户。为了在本地机器上使用 Spring Cloud GCP 项目,您需要在 GCP 上设置一个项目并在本地安装 gcloud CLI

在开始使用 GCP 之前,有一些事项需要注意和操作。首先,您需要登录。运行以下命令登录到 GCP

gcloud auth application-default login

这将简化提供默认凭据以支持您与平台交互的工作。在这种情况下,您声明您希望允许某些操作代表*您*执行。

某些操作独立于特定用户存在。它们可能需要表示您权限子集的细粒度权限。它们可能独立于给定用户运行,例如批处理作业或夜间运行的内容。在这种情况下,使用*服务帐户*是有意义的。当我们查看跟踪时,我们需要稍后配置*服务帐户*。

了解您的*项目 ID* 很有用。您会发现许多咒语需要知道此值。我有一个这样的简短脚本,它在我的 ~/.bashrc 中运行,并被添加到每个 shell 中。

export PROJECT_ID=$(gcloud config list --format 'value(core.project)')

在这些示例中,我倾向于坚持使用 CLI,但是您想要执行的大多数操作也可以通过 Web 控制台完成。

Spring Cloud GCP 入门

您至少现在需要 Spring Cloud 和 Spring Cloud GCP 物料清单 (BOM) 工件。启动新的 Spring Cloud GCP 项目最简单的方法是从Spring Initializr生成一个新项目,然后选择GCP 支持。以下是最小 pom.xml 工件的样子。

Spring Cloud GCP 的基本 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud-gcp.version>1.0.0.RELEASE</spring-cloud-gcp.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-gcp-dependencies</artifactId>
                <version>${spring-cloud-gcp.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>


</project>

在本节中,我们介绍了如何设置基本的 Spring Cloud GCP 项目。在下一节(本周四),我们将介绍如何使用 Spring Cloud CCP 与 MySQL 或 PostgreSQL 等 SQL 数据库进行通信。

获取Spring简讯

通过Spring简讯保持联系

订阅

领先一步

VMware 提供培训和认证,以快速提升您的进度。

了解更多

获得支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部