领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多这是包含 6 部分系列文章的第一部分,每周一和周四发布新文章,介绍面向 Spring 开发人员的 Microsoft Azure。如果没有微软的 Asir Vedamuthu Selvasingh、董逸涛、Bruno Borges、Brian Benz 和 Theresa Nguyen 的投入,我无法完成这项工作。您可以在 Github 上找到本系列文章的代码。在您阅读这些文章时,请随时通过 Twitter (@starbuxman) 向我提出任何反馈或问题。您还可以通过我的 Spring Tips (@SpringTipsLive) 文章了解有关 Microsoft Azure 的更多信息,Bootiful Azure
以下是所有部分
嗨,Spring 粉丝们!在本系列文章中,我将介绍面向 Microsoft Azure 的 Spring 支持,重点关注平台启用的有趣技术,这些技术可供 Spring 应用程序使用。我想像往常一样强调,您应该在 Microsoft Azure 提供差异化体验的地方利用它。Microsoft Azure、Google Cloud、Amazon Web Services 和 Alicloud 都提供诸如自定义消息队列、存储、数据库等基础设施服务,这些服务为更标准的商品和开源替代方案提供了引人注目且有时更优越的替代方案。所有平台都以某种方式拥有使其领先于其他平台的功能。这些功能必然具有吸引力;任何人都可以运行 MySQL 或 Redis,但很少有人可以运行 Google Cloud Spanner 或 Microsoft CosmosDB。使用合适的工具来完成工作!如果 CosmosDB 是您需要的解决方案,请使用它。
如果您尝试完成的工作足够通用,以至于与特定平台无关,那么您绝对应该尽可能以一种不受约束的方式使用它。尽可能保持通用性。想要运行 Java 或 Node.js 进程?使用 Kubernetes 等容器编排器。或者,如果您喜欢自己动手,并且希望快速投入生产,请使用 Heroku 或 Cloud Foundry 等平台即服务,其核心是应用程序,而不是底层容器。这些技术使您能够以应用程序二进制文件的形式进行思考,并快速交付到生产环境。它们也都是开源的,并且拥有庞大的用户群和生态系统,因此它们是最简单的解决方案也是最强大的解决方案。在这种情况下,从技术上讲,使用通用工具也是最佳选择。使用 Cloud Foundry(只需在 Microsoft Azure 上安装并部署 Pivotal Cloud Foundry 服务)或 Microsoft Azure 上的 Kubernetes 等工具非常容易上手。
数据库是一个特别棘手的问题。如果您投资于 Google 的 Spanner 等专有数据库,则应预计如果有一天您想将数据从该平台迁移出去,将会非常困难。前 Riak CTO Dave McCrory 谈到了数据引力的概念——数据池激发应用程序生态系统,这些应用程序向数据池提供数据并从中获取数据。这些应用程序越有用,使用它们的人就越多,人们就越有可能构建这些集成的基础。Salesforce 就是一个很好的例子。其数据具有粘性。Salesforce(客户关系管理)功能丰富且广泛,但它绝不是唯一功能齐全的客户关系管理。与任何竞争产品相比,它拥有的更多的是一个合作伙伴集成生态系统,人们已经开始依赖它。这些合作伙伴集成使 Salesforce 成为一个“加州旅馆”式的提议:您可以入住,但您永远无法离开。因此,显然,请使用最适合工作的工具,但也要意识到,除了有相当大的管理溢价之外,这些工具也存在机会成本。
让我们看看 Microsoft Azure 本身。您需要登录门户以获取本系列文章中将介绍的各种服务的相关配置密钥。门户是 您应该将其添加为书签的内容。通常,当您查看门户中正在使用的服务的相关部分时,您会看到一个名为“密钥”或“配置密钥”之类的部分。不幸的是,它在各个服务之间并不完全一致。
在本系列文章中,我们将重点关注利用平台的优势——微软通过其 Azure 平台提供的差异化优势。您可以使用az
命令行工具实现本文中将介绍的大部分内容。由于它是用 Python 编写的,因此在多个操作系统上安装它非常容易。有关如何安装 Microsoft Azure CLI(az
)的更多信息,请参阅 此文档。
就是这样。假设您拥有 Azure 帐户并已准备好使用az
CLI,您就可以开始编码了。Azure 没有关于身份验证的平台级概念。您需要针对每个服务进行身份验证。这使得处理每个单独的服务变得简单,但这意味着——从整体上看——您需要在开始时比使用 Google Cloud 时更频繁地考虑身份验证。这并不是说其中一个会引入更多工作。使用 Google Cloud,您必须经常并且明确地“选择加入”特定服务才能使用它。所以:我想这两种方式都差不多吧。
您可能会想到,您使用 Spring Initializr启动新项目,就像您预期的那样。除了您想要使用的任何其他内容外,请选择“Azure 支持”。或者,如果您想将 Microsoft Azure 依赖项引入现有应用程序,则可以手动将 Maven 物料清单 (BOM) 工件添加到 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 云 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 上的服务所需的一切。