与Azure Spring Cloud云端应用服务全接触
每10个开发人员中就有6个会使用Spring来开发他们的应用程序
Azure Spring Cloud是Azure系列产品中的一款PaaS产品,是由Microsoft和VMare共同努力构建的。通过依靠Spring Boot,Spring Cloud能够与Azure云组件相集成,并为用户提供无缝的云原生应用开发体验。
作为一项完全托管的云服务,Azure Spring Cloud是由完全托管的AKS群集提供支持的。,它能够为云端的构建、部署、以及管理微服务,提供真正的无服务器体验。
快速入门
为了简单起见,我们假定已经拥有了一个有效的Azure订阅帐户,并且选用Maven(https://maven.apache./)作为生成与依赖关系管理的工具。
请参照如下步骤,在Azure Spring Cloud上部署Spring Boot + Spring Cloud应用
通过Azure门户创建新的Azure Spring Cloud实例。
请下载并安装Azure CLI。
通过命令“az extension add -n spring-cloud -y”,来添加Azure Spring Cloud的扩展。注意,由于Azure CLI版本的不同,spring-cloud命令集可能已经被添加到了默认的Azure CLI命令中,该步骤不一定需要。
通过“az configure --defaults group=”和“az configure --defaults spring-cloud=”,来设置资源组和Azure Spring Cloud实例的默认值。
请按照如下代码,将Azure Spring Cloud Client的依赖项包含到您的项目中。您可能需要在单独的配置文件中进行,以免“污染”那些本地开发的依赖项。
cloud .microsoft.azure spring-cloud-starter-azure-spring-cloud-client 2.2.0
通过命令mvn clean package -Pcloud,来启用在上一步中添加的配置文件,并构建应用程序。
使用az spring-cloud app create -n ,在Azure Spring Cloud实例中创建一个新的Azure Spring Cloud应用(只需在进行该操作)。
通过如下命令,将应用程序部署到Azure Spring Cloud处
az spring-cloud app deploy -n --jar-path target/my-app.jar
如此零代码量、和对项目的影响最小,我们在数分钟之内,成功地将第一个应用程序部署到了完全托管的AKS群集中。
分布式跟踪
在Azure Application Insights上的应用程序映射示例
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 --resource-group --service -f
在开发过程中,该功能对于验证应用程序的行为,或尝试着解决“类生产环境”中的难题,都具有非常实用的价值。
监控和警报
https://devblogs.microsoft./java/hats-ne-in-azure-spring-cloud-jan-update/
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 Config Server的应用程序也无需任何配置,我们只需要准备好spring-cloud-starter-config的依赖关系即可。Azure Spring Cloud将确保在部署时自动配置所有的客户端应用,以安全地连接到上述完全托管的Spring Cloud Config Server上。
服务发现
应用程序在完全托管的服务注册表中实现注册
服务发现与集中式配置非常相似,它能够提供开箱即用的服务。即完全托管的Spring Cloud Eureka Server始终在后台运行,以方便客户端在其服务注册表中进行注册。
同样,客户端应用程序也无需任何配置,即可与上述Spring Cloud Eureka Server进行交互。它们只需要包含spring-cloud-starter-flix-eureka-client的依赖项。
服务绑定
设置Azure Cosmos DB的绑定
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 Spring Cloud上手动扩展应用程序
类似地,我们也可以通过Azure门户、或等效的Azure CLI命令,来手动执行横向扩展,以指定在特定时间内存在的实例副本总数(最多为500)。
只要出现超过10分钟的CPU平均使用率≥70%,就应扩展应用程序
更有趣的是,我们可以选择基于实时收集与分析指标的自动化过程,来扩展应用程序。正如前面在“监控和警报”部分提到的,我们可以通过选择任意的度量标准,来设置某个触发条件。当该条件满足时,它将触发用户自定义的横向扩展操作(例如,将实例的个数增加1)。
设置最孝最大、以及默认的自动扩展限制
如上图所示,对于任何给定的应用程序,我们需要为自动化扩展设定一套触发机制,其中可以包括实例的最孝最大、以及默认的实例数量。
可用性
只需几步点击,即可部署到生产环境中
通过Azure Spring Cloud,我们可以轻松地实现最少的停机时间。,“标准”的Azure Spring Cloud层会遵守“至少99.9%的可用性”--这一服务级别协议。,我们也可以通过几步点击,执行蓝/绿部署,进而让开发人员可以在“类生产”环境中验证各项功能,最大程度地减少对于最终用户的影响,以及消除在发布更新时的停机时间。
计费
Azure Spring Cloud采用 “按使用付费”的模式,在“经济”地实现可扩展性的基础上,满足用户的各种实际使用情况。
“标准”的计费模式说明
具体而言,它的基本费率为用户每小时最多可使用16个vCPU和32 GB的内存。对于超出部分,则会按小时进行计费。
服务小结
总体而言,Azure Spring Cloud可以提供如下服务
缩短开发周期,便于部署到生产环境中。
更少的基础设施管理开销,便于开发人员专注于软件应用本身,而非Kuberes集群。
通过SLA和易于实施的蓝/绿部署,大幅减少停机时间。
将网络的管理任务,完全委托给Microsoft的安全网络。
既提供弹性和可扩展的基础架构,又具有灵活匹配的计费模式。
实用资源
如果您想进一步熟悉Azure Spring Cloud,请参考如下资源
Azure Spring Cloud官方文档(https://azure.microsoft./en-us/services/spring-cloud/)
Azure Spring Cloud培训文档(https://github./microsoft/azure-spring-cloud-training)
由Josh Long和Julien Dubois撰写的《Bootiful Azure Spring Cloud》(https://.youtube./atch?v=WAuGojnf2lA)
结论
Azure Spring Cloud是一款可用来快速构建、部署和管理的云端应用服务。您不必花费太多的精力,便可快速地享用其丰富的功能。如果您当前的应用程序恰好依赖的是与Azure Spring Cloud相同的技术栈,那么您绝对值得一试。
原文标题Azure Spring Cloud: A Comprehensive Overvie,作者Domenico Sibilio
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.】
机器人培训
- 达芬奇机器人献爱心 将主刀公益手术
- 亚马逊将在英国招聘2000多人 重点开发Alexa和无人
- 美、德、英、日、中5国机器人发展全景大盘点
- 国产机器人窗口期 不可错失制造2025弯道超车机会
- 一个小时,这只机械狗“自学”会了走路!
- 三穗长吉镇:无人机飞防作业 稳粮增豆保丰收
- 依靠静电着陆的新型机器人
- 工业机器人推广应用座谈会
- 在苹果的智能机器人软件公司是一种怎样的体验
- 四大家族之KUKA工业机器人应用案例分析
- 万事俱备只欠东风?机器人产业的东风到底在哪
- 欧洲 6 轮送货机器人开始在美国大学推广
- 芜湖:考核第一!6项冠军!
- 人工智能有望打破医疗资源不均衡
- 立讯精密:已进军新能源汽车市场,目标成为全
- 90后用机器人炒菜周入10万,炒菜机器人真的有可