【51CTO.com快译】近年来,Java持续在企业中得到广泛地运用。例如:LinkedIn正使用着500多个Java微服务,Minecraft的游戏客户端是由Java编写而成,而Yammer的后端也是用Java编写的,甚至连Microsoft的Azure云也包含了一些可与Java应用进行交互组件,以及为Java特定的应用。可以说,随着Java生态系统逐渐被Spring所主导,Microsoft不但积极地参与到Java社区中,而且推出了Azure Spring Cloud等开源的Java项目,以便更好地支持Java应用程序和集成Azure Cloud组件。
Azure Spring Cloud是Azure系列产品中的一款PaaS产品,是由Microsoft和VMware共同努力构建的。通过依靠Spring Boot,Spring Cloud能够与Azure云组件相集成,并为用户提供无缝的云原生应用开发体验。
作为一项完全托管的云服务,Azure Spring Cloud是由完全托管的AKS群集提供支持的。因此,它能够为云端的构建、部署、以及管理微服务,提供真正的无服务器体验。
快速入门
为了简单起见,我们假定已经拥有了一个有效的Azure订阅帐户,并且选用Maven(https://maven.apache.org/)作为生成与依赖关系管理的工具。
请参照如下步骤,在Azure Spring Cloud上部署Spring Boot + Spring Cloud应用:
- <profiles>
- <profile>
- <id>cloud</id>
- <dependencies>
- <dependency>
- <groupId>com.microsoft.azure</groupId>
- <artifactId>spring-cloud-starter-azure-spring-cloud-client</artifactId>
- <version>2.2.0</version>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
- az spring-cloud app deploy -n {my-app}
- --jar-path target/my-app.jar
如此零代码量、和对项目的影响最小,我们在数分钟之内,成功地将第一个应用程序部署到了完全托管的AKS群集中。
分布式跟踪
Azure Spring Cloud能够为您的应用程序提供现成的分布式跟踪功能。它主要依靠Azure Application Insights来构建完整的“应用程序映射”,以展示传入的请求将如何流入系统,组件之间如何交互,采样调用的跟踪,以及有关调用的输出和持续时间等信息。
您既可以指定被依赖的Azure Application Insights预存实例,也可以通过启用分布式跟踪的设置,以专门创建一个全新的Azure Application Insights实例,供Azure Spring Cloud使用。
日志存储
诊断设置的示例,实现了将日志和各项指标重定向到Log Analytics上
Azure Spring Cloud通过Log Analytics、Azure存储或Azure事件中心,来提供日志与各项指标的收集和存储。我们可以通过“诊断设置”,来指定用于存储日志和指标的方式,并启用该功能。
在实际操作中,最常用的方法是:将所有日志和指标都发送到Azure Log Analytics的工作区中,以便依靠强大的Log Analytics Query Language(日志分析查询语言),对收集到的数据执行特定、且准确的各种历史信息检查。
值得一提的是,我们也可以使用一个特殊的表—AppPlatformLogsForSpring,来查询Log Analytics。该表包含了部署在Azure Spring Cloud上的各种应用程序中的所有日志。
日志跟踪
根据Azure Spring Cloud的一月份更新,我们已经可以通过运行如下命令,将流式日志实时地传输到终端上了:
- az spring-cloud app logs --name {app-name} --resource-group {resource-group} --service {asc-instance} -f
在开发过程中,该功能对于验证应用程序的行为,或尝试着解决“类生产环境”中的难题,都具有非常实用的价值。
监控和警报
Azure Spring Cloud在其一月份的更新中,还添加了创建警报规则的功能。它有助于用户实现如下方面:
而且,这些关键功能的设置并不复杂。
集中式配置
当需要针对云原生应用进行集中式配置时,Spring用户往往需要用到Spring Cloud Config Server。而在使用Azure Spring Cloud时,我们不需要自行构建和部署Spring Cloud Config Server,而只需配置一个自动化的部署,然后完全交给由Azure Spring Cloud管理的Spring Cloud Config Server打理便可。
此外,需要联系Spring Cloud Config Server的应用程序也无需任何配置,我们只需要准备好spring-cloud-starter-config的依赖关系即可。Azure Spring Cloud将确保在部署时自动配置所有的客户端应用,以安全地连接到上述完全托管的Spring Cloud Config Server上。
服务发现
应用程序在完全托管的服务注册表中实现注册
服务发现与集中式配置非常相似,它能够提供开箱即用的服务。即:完全托管的Spring Cloud Eureka Server始终在后台运行,以方便客户端在其服务注册表中进行注册。
同样,客户端应用程序也无需任何配置,即可与上述Spring Cloud Eureka Server进行交互。它们只需要包含spring-cloud-starter-netflix-eureka-client的依赖项。
服务绑定
Azure Spring Cloud有一个非常独特的功能,称为“服务绑定”。它允许应用程序与Azure云组件(例如:Azure Cosmos DB、Azure Cache for Redis、以及Azure Database for MySQL)进行交互,而无需为待建立的连接提供凭据。一旦我们为应用程序创建了服务绑定,那么在运行时(runtime),Azure Spring Cloud将自动注入那些可以连接到与Azure服务相匹配的属性。
纵向扩展(Scale up)
我们可以按需通过Azure门户、或等效的Azure CLI命令,轻松地扩展Azure Spring Cloud上应用程序的资源。如上图所示,我们可以采用“标准”的扩展计费方式,即:每个应用的最大vCPU数为4,而分配给应用的最大内存GB数为8。那么纵向扩展便可以此为基数进行扩展。
横向扩展(Scaling Out)
类似地,我们也可以通过Azure门户、或等效的Azure CLI命令,来手动执行横向扩展,以指定在特定时间内存在的实例副本总数(最多为500)。
更有趣的是,我们可以选择基于实时收集与分析指标的自动化过程,来扩展应用程序。正如前面在“监控和警报”部分提到的,我们可以通过选择任意的度量标准,来设置某个触发条件。当该条件满足时,它将触发用户自定义的横向扩展操作(例如,将实例的个数增加1)。
如上图所示,对于任何给定的应用程序,我们需要为自动化扩展设定一套触发机制,其中可以包括实例的最小、最大、以及默认的实例数量。
可用性
通过Azure Spring Cloud,我们可以轻松地实现最少的停机时间。首先,“标准”的Azure Spring Cloud层会遵守“至少99.9%的可用性”--这一服务级别协议。其次,我们也可以通过几步点击,执行蓝/绿部署,进而让开发人员可以在“类生产”环境中验证各项功能,最大程度地减少对于最终用户的影响,以及消除在发布更新时的停机时间。
计费
Azure Spring Cloud采用 “按使用付费”的模式,在“经济”地实现可扩展性的基础上,满足用户的各种实际使用情况。
具体而言,它的基本费率为:用户每小时最多可使用16个vCPU和32 GB的内存。对于超出部分,则会按小时进行计费。
服务小结
总体而言,Azure Spring Cloud可以提供如下服务:
实用资源
如果您想进一步熟悉Azure Spring Cloud,请参考如下资源:
结论
Azure Spring Cloud是一款可用来快速构建、部署和管理的云端应用服务。您不必花费太多的精力,便可快速地享用其丰富的功能。如果您当前的应用程序恰好依赖的是与Azure Spring Cloud相同的技术栈,那么您绝对值得一试。
原文标题:Azure Spring Cloud: A Comprehensive Overview,作者:Domenico Sibilio
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
【51CTO.com快译】本文我们将通过一个使用Tensorflow对一些声音剪辑进行分类的例...
什么是大数据技术? 首先,需要了解什么是大数据,其实大数据是一种特定的描述,...
人肉运维,不在 DevOps 中转型,就在自动化中消亡。云化时代的运维,需要的是高...
阿里云天池读书会五月场来啦 这次我们邀请到了《人工智能数学基...
阿里巴巴今天在北京举行了阿里云智能峰会,在峰会上,阿里巴巴集团高级研究员蒋...
工业大数据,是指在工业领域中,围绕典型智能制造模式,从客户需求到销售、订单...
作为企业主或企业家,您应该了解在企业周围建立品牌的重要性。强大的品牌影响力...
对于一个企业的网站来说,空间起着至关重要的作用,要想在后期的推广中取得好的...
前言 本篇是SLS新版告警系列宣传与培训的第三篇 后续我们会推出20 系列直播与实...
TOP云 (west.cn)3月6日消息,近日组合 域名 wegame.com曝出交易,在大家对背后...