抢占先机
VMware 提供培训和认证,助您飞速进步。
了解更多这是六部分系列文章的第一部分,新文章将于每周一和周四发布,旨在为 Spring 开发者介绍 Microsoft Azure。若没有 Microsoft 的 Asir Vedamuthu Selvasingh、Yitao Dong、Bruno Borges、Brian Benz 和 Theresa Nguyen 的贡献,我无法完成本文。您可以在 Github 找到本系列的示例代码。阅读文章时如有任何反馈或问题,请在 Twitter (@starbuxman) 联系我。您也可以在我题为《Bootiful Azure》的 Spring Tips (@SpringTipsLive) 文章中了解更多关于 Microsoft Azure 的信息。
以下是所有分辑文章
各位 Spring 爱好者大家好!在本系列文章中,我将介绍 Spring 对 Microsoft Azure 的支持,重点关注 Azure 平台为 Spring 应用程序提供的有趣技术。我想一如既往地强调,您应该在 Microsoft Azure 提供了差异化体验的场景下使用它。Microsoft Azure、Google Cloud、Amazon Web Services 和 阿里云 都提供了基础设施服务,如自定义消息队列、存储、数据库等,这些服务相比更通用的标准商用和开源替代方案,提供了引人注目、有时甚至更优的选择。所有平台都有其独到之处,使其在某种程度上领先于同行。这些独到之处必然具有引力;任何人都可以运行 MySQL 或 Redis,但很少有人能运行 Google Cloud Spanner 或 Microsoft CosmosDB。为任务选择正确的工具!如果您需要 CosmosDB 提供的解决方案,就使用它。
如果您尝试进行的工作足够通用,不依赖于特定的平台,那么您应该尽可能以不依赖特定平台的方式来使用它。尽可能保持通用。想运行 Java 或 Node.js 进程吗?使用像 Kubernetes 这样的容器编排工具。或者,如果您喜欢自己,并且喜欢快速上线生产环境,可以使用 Heroku 或 Cloud Foundry 这样的平台即服务(PaaS),它们的关注点是应用程序,而不是底层容器。这些技术让您可以站在应用程序二进制文件的角度思考问题,并快速交付到生产环境。它们都是开源的,拥有庞大的用户基础和生态系统,因此它们既是最简单的解决方案,也是最强大的解决方案。在这种情况下,使用通用工具从技术上讲也是最佳选择。在 Microsoft Azure 上使用 Cloud Foundry(只需在 Microsoft Azure 上安装并部署 Pivotal Cloud Foundry 服务)或 Kubernetes 这样的工具非常简单易上手。
数据库是一个特别棘手的问题。如果您投资于像 Google 的 Spanner 这样的专有数据库,那么您应该预料到,如果您某天想将数据移出该平台,这将非常困难。Riak 前 CTO Dave McCrory 提出了数据引力的概念——这种观念认为,数据池会激发应用程序生态系统,这些应用程序向数据池输入数据,也从数据池中提取数据。这些应用程序越有用,使用它们的人就越多,人们就越有可能在这些集成之上进行构建。Salesforce 是一个很好的例子。它的数据具有粘性。Salesforce 作为 CRM,功能丰富而广泛,但它绝不是唯一功能齐全的 CRM。它所拥有的,比任何竞争对手都多的是一个合作伙伴集成生态系统,人们因此对其产生了依赖。这些合作伙伴集成使 Salesforce 成为了“加州旅馆”式的命题:您可以入住,但永远无法离开。因此,显然,请为任务选择最好的工具,但要意识到,除了可观的管理成本外,这些工具还存在可选性成本。
让我们看看 Microsoft Azure 本身。您需要登录门户以获取本系列中将介绍的各种服务的相关配置密钥。该门户是您应该书签的地址。通常,当您查看所使用服务的门户相关部分时,您会看到一个名为“密钥”或“配置密钥”或类似的章节。不幸的是,这在所有服务中并非 100% 一致。
在本系列文章中,我们将重点介绍如何利用 Azure 平台的优势——Microsoft 通过其 Azure 平台提供的差异化优势。您可以使用 `az` 命令行工具实现本文中我们将介绍的大部分内容。由于它使用 Python 编写,因此在多种操作系统上安装都非常容易。有关如何安装 Microsoft Azure CLI(即 `az`)的更多信息,请查阅此文档。
差不多就是这样了。假设您已经拥有 Azure 账户并准备好使用 `az` CLI,那么您就可以开始编写代码了。Azure 没有平台级的认证概念。您需要按服务进行认证。这使得使用每个独立服务都很直接,但从整体上看,这意味着您在一开始就需要更频繁地考虑认证问题,而不是在使用例如 Google Cloud 时那样。这并不是说哪种方式工作量更大。使用 Google Cloud 时,您在使用特定服务之前通常需要频繁且明确地“选择加入”。所以,我想这两种方式半斤八两吧。
正如您所料,您可以使用Spring Initializr启动新的 Spring Boot 项目。除了您想要使用的其他选项外,请选择 `Azure Support`。或者,如果您想将 Microsoft Azure 依赖项引入现有应用程序,您可以手动将 Maven 物料清单 (BOM) Artifact 添加到您的 Spring Boot 项目的 Maven 或 Gradle 构建中。以下是使用 Maven 的方法。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-spring-boot-bom</artifactId>
<version>${azure.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在我的例子中,Maven 属性 `azure.version` 设置为 `2.0.5`。
从这里开始,我将使用 Ivy 语法介绍 Maven 仓库依赖坐标:`groupId` : `artifactId` : `version`。有时,`version` 不是必需的,我将省略它,因为 BOM 会为我们管理这些版本。
如果您想使用本地机器上安装的 `az` CLI 来跟随这些示例,您需要运行 `az login`。否则,您可以从 Azure 门户中启动 Microsoft Azure Cloud Shell。它将为您提供两个选择:Bash 或 Powershell。
登录后,您需要配置一个资源组。资源组是资源的命名集合。这非常方便,因为您可以创建所有与本文介绍的 Spring 和 Microsoft Azure 相关的资源,并将每个资源与此资源组关联起来,然后当您完成后,销毁该资源组,它将级联删除所有与之关联的内容。
这使得计费、生命周期管理以及更多方面都非常方便!每个资源组都与一个区域关联。Microsoft Azure 拥有大量的区域供您运行服务。截至撰写本文时,全球共有 54 个区域,比任何其他云提供商都多。
以下是在美国 `West US 2` 位置创建名为 `bootiful` 的资源组的方法。我们将在后续示例中使用它。
az group create --name bootiful --location "West US 2"
您可以运行以下命令来遍历所有可能的区域:`az account list-locations`。您会注意到,在执行命令时,我们在创建资源时需要将其与特定位置关联,通常使用 `-l` 或 `--location` 参数。这可能很繁琐,因此指定一个默认位置并在后续调用中省略它会很有帮助,就像这样:`az configure --defaults location=westus`。
运行 `az configure` 确认一切正常。
有一个Cloud Foundry 服务代理可以用来快速启动各种 Microsoft Azure 服务,然后将它们绑定到您的应用程序。这个服务代理使得在 Cloud Foundry 上运行应用程序,尤其是在 Microsoft Azure 之上,成为针对 Microsoft Azure 服务的应用程序上线生产环境的最简便途径。
好了!现在您已经了解了所有设置 Spring 应用程序以利用 Microsoft Azure 服务所需知道的内容。