|
|
51CTO旗下网站
|
|
移动端

2.3.7 应用程序生命周期(1)

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍应用程序生命周期。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-12 18:10

2.3.7 应用程序生命周期(1)

在研发一个应用程序产品的过程中,大致都会分为以下几个阶段:设计、开发、测试、发布(部署)、监控(升级维护),直到最终应用程序的删除,如图2.3.7-1 所示。为了维护整个流程和实现持续集成,很多公司都在使用自己研发或者第三方提供的开发管理和持续集成系统。为了使各种角色人员能够更简单地开发和维护应用程序,Service Fabric 平台对管理应用程序整个生命周期提供了一流的支持,从开发到部署、到日常管理和维护,再到最后应用程序的删除。借助Service Fabric 提供的工具,可以轻松地持续集成应用程序,并且能够快速发布新的功能,以响应用户的需求。

Service Fabric 针对不同角色提供了不同的工具,主要包含以下几种服务模型角色:服务开发人员,应用开发人员,应用程序管理人员,测试人员。服务和应用开发人员使用Service Fabric 提供的开发模型开发具体的服务,当开发完成后,打包程序并提交给应用管理人员发布部署;之后测试人员使用群集提供的测试功能模拟测试;测试成功后,应用管理人员就可以将应用程序或者服务上线。

1. 开发应用程序和服务

开发人员借助Service Fabric 提供的应用程序模型、Reliable Service 和Actors 编程模型,将应用程序打包成Service Fabric 要求的包格式,并配置应用程序配置和服务配置。开发人员也可以构建各种各样的服务和多种类型的应用程序。最终都需要将程序打包成Service Fabric 应用程序包。

Service Fabric 的最大优势就是可以构建本地开发群集。本地群集和Azure 的群集的是类似的,程序不需要修改任何配置就可以在本地或者Azure 的群集上运行。开发人员可以在本地群集中进行开发调试。

2. 部署应用程序和服务

部署人员将开发人员提供的应用程序部署到Azure Service Fabric 群集中。ServiceFabric 提供了PowerShell 和VS 工具,方便发布和维护应用程序。

使用PowerShell 部署应用程序比较简单,首先,需要连接到Azure Service Fabric 群集中,如果是开启证书安全的群集,在连接时需要提供证书信息。当连接到群集后,需要将应用程序包上传至群集的ImageStore 中,在上传之前需要将Service Fabric SDK 提供命令导入到PowerShell 中。

之后,就可以借助Copy-ServiceFabricApplicationPackage 命令上传包。可以指定上传包的超时时间,默认包的超时时间为30 分钟。如果包很大或者网络状况不好的情况下,很容易超时, 建议增加超时或者通过压缩包的方式进行上传。在使用Copy-ServiceFabricApplicationPackage 时,可使用CompressPackage 进行压缩。另外需要注意的是,在上传时, 需要指定ImageStoreConnectionString , 可以使用Get-mageStoreConnectionStringFromClusterManifest 命令来获取ImageStore 的地址。

完成了上传应用程序报的过程之后,就要注册应用程序类型。Service Fabric 通过应用程序类型来定义不同的应用程序和版本。使用PowerShell 命令进行注册应用程序很简单,只需要指定之前上传的应用程序包名称即可。Service Fabric 会自动解析应用程序包中的应用配置,使用其中定义的应用类型和版本信息来注册新的应用类型。在注册时需要注意,Register-ServiceFabricApplicationType 默认的超时时间是60 秒,当应用程序包内容很多时,很容易造成超时,所以建议使用-TimeoutSec 来修改默认的超时时间。

当注册完成后就可以创建应用程序,在创建应用程序时,需要指定具体的应用类型和版本进行创建,另外需为应用程序定义唯一的名称。可以为同一个应用程序类型创建多个应用实例,每个应用实例都将隔离运行,具有自己的工作目录和进程。完整的部署脚本代码如下:

  1. Import-Module " $ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\  
  2. PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"  
  3. Connect-ServiceFabricCluster kevin-sf.chinanorth.chinacloudApp.cn:19000  
  4. Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path  
  5. -ApplicationPackagePathInImageStore MyApplicationV1 -ImageStoreConnectionString  
  6. (Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricCluster  
  7. Manifest)) -TimeoutSec 1800  
  8. (Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClus  
  9. terManifest))  
  10. Register-ServiceFabricApplicationType MyApplicationV1  
  11. New-ServiceFabricApplication fabric:/MyApp MyApplicationType 1.0.0  
  12. Get-ServiceFabricApplication 

3. 升级应用程序

Service Fabric 的应用程序是一组服务的集合,Service Fabric 支持升级应用程序或者应用程序下的指定服务。当提交新版本的应用程序,并更新旧的应用程序时,平台会自动比对两个版本应用程序的差异,Service Fabric 只会更新变动的服务,未变动的服务将不会更新。

在升级过程中,Service Fabric 资源管理器会根据群集的更新域分配,滚动更新每个域的服务。因此在更新的过程中,应用程序的服务一直保持可用。但是升级过程中,可能会出现新旧版本混用的现象。所以这就要求应用程序必须向前和向后兼容。Service Fabric 要求在升级时,必须指定升级的运行状况策略,当一个更新域完成升级时,要求该域通过所有的运行状况检查才视为更新成功,如果不符合则会视为更新失败。

Service Fabric 应用程序中,有两种类型分服务,默认服务和普通服务,默认服务可以随着应用程序创建而启动,而普通服务需要手动创建。更新默认服务,与更新普通服务是有差别的。需要注意以下几点。

(1) 从Service Fabric 5.5 开始默认不允许更新默认服务。需要使用ARM 模板在创建和更新时,将群集设置EnableDefaultServicesUpdate 为true。

(2) 默认服务在进行更新时,如果升级失败,将自动回滚应用程序,而普通服务升级失败则不会。

(3) 如果新版本的应用程序删除了默认服务,在更新后,删除的默认服务将无法还原。也就是说,当升级失败后回滚至之前的状态时,只会新创建一个默认服务,而无法恢复之前删除的。

在升级之前,需要准备升级版本的应用程序,在新版本的应用程序包中,可以只包含需要升级的服务和应用配置文件。并且,必须更新应用程序的版本号和服务的版本号。这些配置分别在 ApplicationManifest 和ServiceManifest 配置文件中,修改版本后,将新的应用程序包上传并注册到Service Fabric 中。

之后,就可以使用PowerShell 的Start-ServiceFabricApplicationUpgrade 命令来进行升级了。该命令的常用参数说明参见表2.3.7-1。

表2.3.7-1


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

计算机病毒防范艺术

本书由Symantec首席反病毒研究员执笔,是讲述现代病毒威胁、防御技术和分析工具的权威指南。与多数讲述计算机病毒的书籍不同,本书完全是...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊