发明内容
鉴于上述问题,本发明实施例提供了一种服务的自动化部署方法、装置及电子设备,克服了上述问题或者至少部分地解决了上述问题。
根据本发明实施例的一个方面,提供了一种服务的自动化部署方法,所述方法包括:对服务进行部分部署;获取所述服务的性能和日志数据;根据所述服务的性能和日志数据,确定***的健康状态值;当所述***的健康状态值低于回退策略制定的策略阈值时,根据所述回退策略进行部署回退;否则,根据部署策略完成剩余服务的全量部署。
在一种可选的方式中,所述根据所述服务的性能和日志数据,确定***的健康状态值,进一步包括:根据所述服务的性能和日志数据分析业务请求响应成功率;当所述业务请求响应成功率低于预设阈值时,对所述***的健康状态进行综合判断,得到***的健康状态值。
在一种可选的方式中,所述对所述***的健康状态进行综合判断,得到***的健康状态值,进一步包括:获取所述***的性能数据;分析所述***的性能数据,得到***的数据库健康状态值、网络健康状态值和***负载健康状态值;根据所述业务请求响应成功率、数据库健康状态值、网络健康状态值和***负载健康状态值以及各自的权重,确定***的健康状态值。
在一种可选的方式中,所述***的性能数据包括***的CPU占用率、内存的使用量、磁盘的I/O性能和网络响应时间中的一种或多种。
在一种可选的方式中,所述根据所述服务的性能和日志数据,确定***的健康状态值,进一步包括:根据所述服务的性能和日志数据,确定初始的***的健康状态值;当所述初始的***的健康状态值低于回退策略制定的策略阈值时,获取当前***并发量以及***当前时间段的历史负载情况;若所述当前***并发量与所述***当前时间段的历史负载情况的偏差不超过预设值,则将所述***的健康状态值确定为一不低于所述回退策略制定的策略阈值的值。
在一种可选的方式中,所述方法还包括:当所述***的健康状态值低于回退策略制定的策略阈值时,根据告警策略产生告警事件。
在一种可选的方式中,所述根据所述回退策略进行部署回退,进一步包括:查询服务的历史版本;根据所述部署策略对已经更新代码的服务实例回退至最近的历史版本。
根据本发明实施例的另一方面,提供了一种服务的自动化部署装置,所述装置包括:部署模块,用于对服务进行部分部署;获取模块,用于获取所述服务的性能和日志数据;确定模块,用于根据所述服务的性能和日志数据,确定***的健康状态值;回退模块,用于当所述***的健康状态值低于回退策略制定的策略阈值时,根据所述回退策略进行部署回退;否则,根据部署策略完成剩余服务的全量部署。
根据本发明实施例的另一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的服务的自动化部署方法的操作。
根据本发明实施例的另一方面,提供了一种计算机存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上所述的服务的自动化部署方法的操作。
本发明实施例通过首先仅对服务进行部分部署,然后通过自动化测试监控服务的运行情况,以此确定***的健康状态值,根据***的健康状态来决定是继续部署还是回退,实现整个部署流程的自动化,提高***上线部署的效率和减少了人工介入环节,实现了***的快速迭代。部署出现问题时能够及时的回退,保障了业务正常运行。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种基于容器技术实现服务自动化部署的方法,结合持续集成、持续交付和容器化技术,实现***中服务的自动化部署。在上线部署过程中,通过持续集成实现对服务的代码的自动化编译、打包、测试,并对接容器化平台实现自动化部署。部署时不是直接全量部署,而是先部分部署,部分部署之后,通过自动化测试实现对业务的验证(如实时分析服务的日志实现对***当前运行状态的监控),并根据业务成功率自动执行对应的处理策略,是继续执行部署还是回退,以此实现整个部署流程的自动化。通过本发明实施例的方案,提高了***上线部署的效率和减少了人工介入环节,实现了***的快速迭代和上线部署的能力。部署出现问题时能够及时的回退,保障业务正常运行。
图2示出了本发明实施例所应用的***的架构示意图,图3示出了本发明实施例的业务流程示意图。如图2和图3所示,通过持续集成实现服务的代码的下载、编译、部署和自动化测试。服务部署时按照版本在各容器实例中进行部署,通过容器化平台将服务发布到生产环境。服务部署模块和容器化平台之间的交互过程为:下载服务代码;编译、打包;制作镜像;推送镜像到镜像仓库;通过接口方式告知容器化平台需要部署的服务和镜像;容器化平台对服务进行部署;查询容器化平台部署状态。
服务监控模块包括服务监控单元、策略维护单元和业务成功率分析单元,其中服务监控单元采集和分析服务实例的相关性能和日志数据,并将数据汇总,业务成功率分析单元根据汇总数据分析业务成功率,实现整体业务成功率的监控,策略维护单元进行***监控告警策略、业务成功率告警策略、部署策略(在部署过程中可选择部分部署还是全量部署)以及回退策略的制定和维护,当业务成功率低于阈值时产生告警事件,并根据策略判断是否对服务的部署进行回退操作,如果需要回退则查询历史版本并根据部署策略对已经更新代码的服务实例进行回退操作,回退至最近的历史版本,如果是全量部署则将最新代码对服务进行更新,如此每次都是部分部署,部署后验测试验证,直至部署全部完成。不管是继续部署还是回退后续都需要重新进行自动化测试和验证。
具体地,服务监控单元对服务运行状态进行监控,获取服务的实时日志,以及主机CPU、内存、I/O等数据;业务成功率分析单元根据服务监控单元获取的服务日志,根据服务对请求数据响应的情况进行分析,判断请求成功还是失败。策略维护单元进行***监控告警策略、业务成功率告警策略、部署策略以及回退策略的制定和维护。这些单元均为软件模块单元。
下面通过具体的实施例对本发明进行进一步详细说明。图4示出了本发明实施例提供的服务的自动化部署方法的流程图。如图4所示,该方法包括:
步骤401:对服务进行部分部署。
本步骤中,先对服务进行部分部署,而非全量部署。当该部分部署的服务通过测试验证后,再继续部署剩余的服务中的部分服务。相比一次性全量部署的方式,若出现问题能快速查找问题,并及时回退,不至于所有的部署全部白费。提高了部署的效率和成功率。一般进行服务部署时可能有上百台主机需要部署,若同时部署这么多主机,出现问题将很难查找。因此本发明实施例仅部署部分主机,例如仅部署10%的主机,经测试验证无误后再进行下一个10%主机的部署。如此直至所有主机全部部署完成。
步骤402:获取所述服务的性能和日志数据。
本步骤中,可通过所述服务监控模块的服务监控单元获取所述服务的性能和日志数据。
步骤403:根据所述服务的性能和日志数据,确定***的健康状态值。
步骤404:当所述***的健康状态值低于回退策略制定的策略阈值时,根据所述回退策略进行部署回退;否则,根据部署策略完成剩余服务的全量部署。
策略维护单元制定了***的健康状态值的策略阈值,该策略阈值为是否需要部署回退的一个阈值。该策略阈值可根据实际的运行状况,经过多次实验得到一个最合适的阈值,也可以根据业务需求,在策略维护单元中手动指定阈值。该阈值可以设置为例如90%。若经过测试验证,***的健康状态值低于该策略阈值,则需要部署回退;若***的健康状态值不低于该策略阈值,则说明部署成功,无需回退,可继续完成其余服务的部署。当所述***的健康状态值低于回退策略制定的策略阈值时,根据告警策略产生告警事件。进一步的,在回退之前需要查询服务的历史版本,并根据所述部署策略对已经更新代码的服务实例回退至最近的历史版本。
本发明实施例通过首先仅对服务进行部分部署,然后通过自动化测试监控服务的运行情况,以此确定***的健康状态值,根据***的健康状态来决定是继续部署还是回退,实现整个部署流程的自动化,提高***上线部署的效率和减少了人工介入环节,实现了***的快速迭代。部署出现问题时能够及时的回退,保障了业务正常运行。
***的健康状态值根据不同的设定,可以由不同的参数决定,例如***的健康状态值可仅根据服务的健康状态确定,也可以基于服务的健康状态,结合***的数据库、网络和***负载等情况进行确定,还可以在服务的健康状态、***的数据库、网络和***负载等情况的基础上,进一步结合当前***并发量以及***当前时间段的历史负载情况进行确定。下面分别对这几种情况进行进一步说明。
图5示出了本发明另一实施例提供的服务的自动化部署方法的流程图。如图5所示,该方法中***的健康状态值可仅根据服务的健康状态确定,该方法包括:
步骤501:对服务进行部分部署。
步骤502:获取所述服务的性能和日志数据。
步骤503:根据所述服务的性能和日志数据分析业务请求响应成功率。
步骤504:判断所述业务请求响应成功率是否低于预设阈值;若是,执行步骤505;否则,执行步骤501,直至部署完成。
步骤505:根据所述回退策略进行部署回退。
图6示出了本发明又一实施例提供的服务的自动化部署方法的流程图。如图6所示,该方法中***的健康状态值基于服务的健康状态,结合***的数据库、网络和***负载等情况进行确定,该方法包括:
步骤601:对服务进行部分部署。
步骤602:获取所述服务的性能和日志数据,以及***的性能数据。
所述***的性能数据包括***的CPU占用率、内存的使用量、磁盘的I/O性能和网络响应时间中的一种或多种。
步骤603:根据所述服务的性能和日志数据分析业务请求响应成功率;分析所述***的性能数据,得到***的数据库健康状态值、网络健康状态值和***负载健康状态值。
若仅根据服务的性能和日志数据分析业务请求响应成功率,可能不能反映最准确的***健康状况。因为整个***是否正常运行,还受一些其他因素的影响,例如数据库、网络、***负载等,因此需要从多个维度对***运行服务后的健康状态进行判断。
步骤604:根据所述业务请求响应成功率、数据库健康状态值、网络健康状态值和***负载健康状态值以及各自的权重,确定***的健康状态值。
根据各个指标对于***的整体需求和重要程度,为其分配相应的权重。在进行阈值的判别之前,根据各指标数据,以及各自的影响权重占比确定当前***的健康程度。具体的,可以将各指标数值乘以其权重后求和,得到***的健康状态值。
步骤605:判断所述***的健康状态值是否低于回退策略制定的策略阈值;若是,执行步骤606;否则,执行步骤601,直至部署完成。
步骤606:根据所述回退策略进行部署回退。
图7示出了本发明又一实施例提供的服务的自动化部署方法的流程图。如图7所示,该方法中***的健康状态值在服务的健康状态、***的数据库、网络和***负载等情况的基础上,进一步结合当前***并发量以及***当前时间段的历史负载情况进行确定,该方法包括:
步骤701:对服务进行部分部署。
步骤702:获取所述服务的性能和日志数据,以及***的性能数据。
步骤703:根据所述服务的性能和日志数据分析业务请求响应成功率;分析所述***的性能数据,得到***的数据库健康状态值、网络健康状态值和***负载健康状态值。
步骤704:根据所述业务请求响应成功率、数据库健康状态值、网络健康状态值和***负载健康状态值以及各自的权重,确定初始的***的健康状态值。
步骤705:判断所述初始的***的健康状态值是否低于回退策略制定的策略阈值;若是,执行步骤706;否则,执行步骤701,直至部署完成。
步骤706:获取当前***并发量以及***当前时间段的历史负载情况。
由于服务运行有时有一些特定的场景,例如购物网站的促销,此时,***负载会较大,或者业务请求响应成功率会降低,但是这并不能说明***健康状况不好,因为属于特殊场景。因此,此时可进一步根据***并发量以及***当前时间段的历史负载情况来判断***是否健康,若***并发量大(如超过预设的阀值),历史负载情况和当前负载情况差不多,都超过了预设范围,则可以不做回退处理,继续进行部署。
步骤707:判断所述当前***并发量与所述***当前时间段的历史负载情况的偏差是否超过预设值;若是,执行步骤708;否则,执行步骤701,直至部署完成。
步骤708:根据所述回退策略进行部署回退。
在一些实施例中,在步骤707中,当所述当前***并发量与所述***当前时间段的历史负载情况的偏差没有超过预设值时,还可以将所述***的健康状态值确定为一不低于所述回退策略制定的策略阈值的值,并进一步判断***的健康状态值是否低于回退策略制定的策略阈值,若是,则根据所述回退策略进行部署回退,否则根据部署策略完成剩余服务的全量部署。
本发明上述具体的应用实例结合持续集成和容器化技术,大幅降低了业务***部署难度和缩减了上线部署时间,实现上线部署过程的自动化操作,针对部署过程中业务出现的异常情况,能够实时进行监控并根据策略进行快速响应处理,提升了***的部署效率,保障***稳定运行。根据***的运行情况实施多维度的监控,考虑了多项参考因素,并制定多种策略来实现对异常情况的响应,确保线上***的正常运行,降低上线过程中对业务处理的影响。
图8示出了本发明实施例提供的服务的自动化部署装置的结构示意图。如图8所示,该装置800包括:部署模块801、获取模块802、确定模块803和回退模块804。
部署模块801用于对服务进行部分部署;获取模块802用于获取所述服务的性能和日志数据;确定模块803用于根据所述服务的性能和日志数据,确定***的健康状态值;回退模块804用于当所述***的健康状态值低于回退策略制定的策略阈值时,根据所述回退策略进行部署回退;否则,根据部署策略完成剩余服务的全量部署。
在一种可选的方式中,所述确定模块803进一步用于根据所述服务的性能和日志数据分析业务请求响应成功率;当所述业务请求响应成功率低于预设阈值时,对所述***的健康状态进行综合判断,得到***的健康状态值。
在一种可选的方式中,所述确定模块803进一步用于获取所述***的性能数据;分析所述***的性能数据,得到***的数据库健康状态值、网络健康状态值和***负载健康状态值;根据所述业务请求响应成功率、数据库健康状态值、网络健康状态值和***负载健康状态值以及各自的权重,确定***的健康状态值。
在一种可选的方式中,所述***的性能数据包括***的CPU占用率、内存的使用量、磁盘的I/O性能和网络响应时间中的一种或多种。
在一种可选的方式中,确定模块803进一步用于根据所述服务的性能和日志数据,确定初始的***的健康状态值;当所述初始的***的健康状态值低于回退策略制定的策略阈值时,获取当前***并发量以及***当前时间段的历史负载情况;若所述当前***并发量与所述***当前时间段的历史负载情况的偏差不超过预设值,则将所述***的健康状态值确定为一不低于所述回退策略制定的策略阈值的值。
在一种可选的方式中,所述装置还包括告警模块805,用于当所述***的健康状态值低于回退策略制定的策略阈值时,根据告警策略产生告警事件。
在一种可选的方式中,所述回退模块804进一步用于查询服务的历史版本;根据所述部署策略对已经更新代码的服务实例回退至最近的历史版本。
需要说明的是,本发明实施例提供的服务的自动化部署装置是能够执行上述服务的自动化部署方法的装置,则上述服务的自动化部署方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
本发明实施例通过首先仅对服务进行部分部署,然后通过自动化测试监控服务的运行情况,以此确定***的健康状态值,根据***的健康状态来决定是继续部署还是回退,实现整个部署流程的自动化,提高***上线部署的效率和减少了人工介入环节,实现了***的快速迭代。部署出现问题时能够及时的回退,保障了业务正常运行。
本发明实施例提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行上述任意方法实施例中的服务的自动化部署方法的步骤。
本发明实施例通过首先仅对服务进行部分部署,然后通过自动化测试监控服务的运行情况,以此确定***的健康状态值,根据***的健康状态来决定是继续部署还是回退,实现整个部署流程的自动化,提高***上线部署的效率和减少了人工介入环节,实现了***的快速迭代。部署出现问题时能够及时的回退,保障了业务正常运行。
本发明实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中的服务的自动化部署方法的步骤。
本发明实施例通过首先仅对服务进行部分部署,然后通过自动化测试监控服务的运行情况,以此确定***的健康状态值,根据***的健康状态来决定是继续部署还是回退,实现整个部署流程的自动化,提高***上线部署的效率和减少了人工介入环节,实现了***的快速迭代。部署出现问题时能够及时的回退,保障了业务正常运行。
图9示出了本发明实施例提供的电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图9所示,该电子设备可以包括:处理器(processor)902、通信接口(Communications Interface)904、存储器(memory)906、以及通信总线908。
其中:处理器902、通信接口904、以及存储器906通过通信总线908完成相互间的通信。通信接口904,用于与其它设备比如客户端或其它服务器等的网元通信。处理器902,用于执行程序910,具体可以执行上述任意方法实施例中的服务的自动化部署方法。
具体地,程序910可以包括程序代码,该程序代码包括计算机操作指令。
处理器902可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器906,用于存放程序410。存储器906可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
本发明实施例通过首先仅对服务进行部分部署,然后通过自动化测试监控服务的运行情况,以此确定***的健康状态值,根据***的健康状态来决定是继续部署还是回退,实现整个部署流程的自动化,提高***上线部署的效率和减少了人工介入环节,实现了***的快速迭代。部署出现问题时能够及时的回退,保障了业务正常运行。
在此提供的算法或显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。