基于微服务的电网云平台运维技术研究综述
2023-04-26樵永锋
陈 硕,乔 林,李 钊,袁 野,樵永锋,程 旭
(1.国网辽宁省电力有限公司 信息通信分公司,沈阳 110001;2.国网辽宁省电力有限公司,沈阳 110001;3.东北大学 计算机科学与工程学院,沈阳 110819;4.丹东东方测控技术股份有限公司,辽宁 丹东 118002;5.沈阳农业大学 经济管理学院,沈阳 110866)
0 引言
近年来,由于云计算技术的大力发展,其被广泛应用于各行业。与传统的信息化系统相比,云计算具有更复杂的技术架构,并且具有的资源池化、弹性供给等特征,使得企业信息化更节约、更便捷和更易操控,提高了企业面对外部环境变化的应对能力,从而提升了企业的业务敏捷性[1]。
随着信息化建设的迅速发展,国家电网有限公司(以下简称公司)信息化建设覆盖生产经营各个环节。传统的以物理服务器和网络为主体构建的架构存在扩展性不高、稳定性不强、维护成本较高等问题,已经难以满足企业的业务需求。微服务架构的出现,使得公司的信息化系统有了新的发展方向,微服务应用体系架构如图1所示。
图1 微服务应用体系架构
微服务架构的应用满足了公司业务的不断开拓,通过容器化技术实现业务功能的分拆,实现软件资产复用和数据共享。微服务架构具有高扩展性、高稳定性以及低运营成本等优点。然而随着微服务应用数量几何式增长发展,部署于云平台上的微服务运维面临新的困难和挑战,即大规模微服务错综复杂关系环境下的感知监控、资源保障以及故障分析问题。
本文首先从基于微服务电网云平台运维面临的工作变化以及问题展开,对目前现有的微服务感知监控、资源调配以及故障分析3个主要运维技术算法进行总结综述。此外,对每种运维技术方法进行了优缺点分析。最后,根据目前运维技术的研究现状以及企业的实际需求做出进一步展望。
1 基于微服务云平台的运维技术
微服务通过容器、微服务框架等方式支撑应用在云上部署和运行,主要针对新建业务应用或新建模块,将存在众多复杂业务子模块、且子模块间紧密耦合的传统单体应用,以合理的业务层面维度,拆分为多个模块化微服务[2]。微服务的访问统一由云上的API网关进行负载、汇总、转发,微服务的注册、发现和服务治理通过云上的分布式服务总线实现。针对大规模微服务的云平台应用了云计算、虚拟化、微服务等相关技术,电网云平台中心基于微服务架构的运维工作发生了变化,并且对应面临同样的问题,主要包括3个运维技术:
1)云平台上的微服务具有漂移特点,对微服务云平台监控要求更高。
传统架构下,业务应用固化运行在特定的机器资源之上,可以构建资源和业务应用的对应关系。此外,业务的运行方式相对简单,变化不多,监控运维任务相较容易。然而在微服务架构下,微服务应用和资源环境不再存在固化的依赖关系,并且为了保证微服务应用的运行稳定,需要根据资源特性和空闲情况进行合适的资源调配,这就极大地增加了监控的运维成本以及复杂度。
传统监控感知技术利用CMDB(配置管理数据库)的构建、资源和应用侧的指标采集分析等手段[3-5],识别并管理业务应用与资源环境之间的依赖关系,通过资源与应用的监控指标也基本能及时发现业务异常。然而,传统监控方式需要对每一个微服务添加多个监控模块以收集不同监控指标数据,造成了额外的运营成本;并且传统依靠资源设备指标采集分析的单一监控手段,既对云平台有侵入式性能降低,也无法满足微服务架构业务的监控需求;此外,无法探测并识别不断动态变化的微服务运行情况,对业务日志的关联关系分析也缺少有效手段。
2)微服务基于云平台弹性资源特点,对云资源保障要求更高。
云资源是宝贵资源,为微服务提供资源的方式是“需多少用多少”。因此,云平台必须根据微服务和业务应用的资源使用情况,及时供给差额资源,回收闲置资源。
传统架构下,由物理服务器等为业务应用提供运行资源,资源供给相对固定,当业务应用资源欠缺时,由信息调度统筹资源调度安排,资源调度不仅受运维人员经验影响,且耗时较长。
在云平台环境下,大量的业务应用以分布式的方式分派给由底层云平台计算资源组成的资源池中,需要云资源调度进行横向伸缩和纵向伸缩。横向伸缩由云平台自带功能能够实现自动伸缩。但纵向伸缩涉及部署在云平台资源上的微服务和应用,当纵向伸缩时,云主机需要启停,从而导致微服务和应用也需同步启停。因此,对资源的精准识别和智能资源调度策略要求更高。
3)云平台上的大规模微服务的调用复杂,微服务的故障分析难度更大。
在传统架构下,业务应用与服务之间的调用关系相对比较固化,一般按照展示层、应用层、数据层、数据库分层实现,应用服务与日志文件、数据架构集中存储管理,通过在资源和应用侧获取业务运行指标数据,有经验的运维人员也能快速完成故障定位。
在云环境下,微服务架构带来了更优的可扩展性、独立升级性、易维护性、业务健壮性等能力,大的业务按照功能职责拆分成独立的服务应用模块,但随着电网业务规模的不断发展,相应的业务服务数量也不断增加,服务间的调用关系越来越错综复杂,给故障发现和快速定位带来更大的挑战。
云平台运维工作的各项工作都是相互关联,监控运维为资源调度以及故障分析提供多方位监控指标数据支撑;故障分析工作不仅需要应用侧监控数据,还需云资源的各项指标;资源调度同样需要根据故障分析反馈的分析报告以及监控数据进行精准的资源调度。基于微服务架构的运维工作之间的关系如图2所示。
图2 各运维工作之间的关系图
2 云平台运维的国内外研究现状
随着云计算的不断深入应用,企业核心业务向云端迁移带来整个IT架构变化,虚拟化技术在提升资源利用率的同时,也加大了运维技术的复杂度。尤其是作为云服务的一个新兴的分支,包含微服务业务的的云平台运维技术得到国内外研究机构的广泛关注。
2.1 国外研究现状
随着越来越多的企业组织由传统的C/S架构向云计算、大数据、移动互联网驱动下的动态灵活的云架构转型,对云管理平台、云环境运维的需求也出现了爆发性增长。为了应对云环境的复杂性,简化虚拟化环境的控制与管理,加速云资源的部署和扩展,国外的相关研究机构对云运维管理技术已开展了深入研究。
IBM公司在Tivoli[6]产品的基础上推出适用于云环境的运维管理解决方案,简化云管理并实现数据中心自动化,向云运维转型。该解决方案是一套能够帮助运营团队有效管理混合环境并加速云服务交付的ITSM[7]解决方案,涉及了服务台、应用性能管理、系统和工作负载自动化、云管理、IT运维和网络管理、IT运营分析等多个维度。
BMC公司也在云运维领域大力布局,研发的BMC Cloud Lifecycle Management[8]系统能够帮助企业实现云服务的高速可靠交付,同时利用智能分析工具,提早预测并解决性能问题,监控并预测资源消耗情况,以更加直观的方式进行运维管理,提高资源利用率,帮助企业降低云服务成本。此外,BMC还推出TrueSight Pulse系统[9],是一个基于SaaS的实时的基础设施监控解决方案,能够优监控并化所有的环境,包括移动网页应用、主机操作系统和云平台。
惠普公司采用SaaS模式研发运维产品[10],其APM(应用程序性能管理)解决方案提供灵活的交付模式,用户可以选择内部、SaaS或混合环境的任意组合,以符合现有平台和业务模式的需要。主要包括SaaS综合Web应用性能监控服务HP AppPulse Active和针对移动应用的性能监管SaaS软件HP AppPulse Mobile.
除了云计算公司在自有运维产品的研发布局以外,还有一部分开源的运维工具,如Zabbix、Nagios、Ganglia和Zenoss Core等。作为一个企业级开源运维平台,Zabbix[11]拥有精致的WEB界面,不仅能够采集多种监控数据,例如分布式系统监控数据以及网络监控数据,还具有部署简单的优点,提高运维人员的工作效率,降低工业部署成本。同样地,Nagios[12]作为一款开源的企业级监控系统,不仅能够对系统各项参数进行监控,同时可以对多种基本服务类型进行监控。此外由加州大学伯克利分校发起的非企业级开源工具,目的为了监控网络节点的Ganglia[13]也已被广泛应用到各种操作系统和处理器架构上。
国外研究机构对云运维技术的研发主要有两种技术路线:一是将IT运维软件和服务的适用范围扩展到云环境、云平台甚至混合云环境,二是将已有的IT运维软件结合云技术、云平台以SaaS的形式提供给客户。前者要求运维厂商针对云计算环境、云基础设施的特征,提升软件对底层环境的兼容性,添加面向云环境的特性,克服虚拟环境、混合环境的复杂性给运维软件带来的全新挑战。后者则要求运维厂商利用自有的数据中心或与公有云IaaS或PaaS提供商合作,基于互联网为客户交付运维软件的使用权。另外,目前流行的开源运维工具等大部分来自国外,虽然这些开源产品功能非常强大,但对技术要求很高,且动态开发困难,对于应用系统、微服务等业务监控的难度较大。
2.2 国内研究现状
随着云计算技术在国内的引入和广泛普及,云平台的运维技术也得到快速发展。包括传统的云计算服务企业和小规模创新企业,为国内的云运维转型提供了更有益的实践、更丰富的技术发展路径。
阿里巴巴在DevOps实践中,提出智能化、自动化运维[14],实现了故障智能预测以及自动化业务调度,提高了运维效率。此外,还提供了无人值守发布、无人介入运维等解决方案,实现了全天候发布、自动化周发布过千次、无人值守、小于半小时自动化上线验证、日常运维工作无人介入式处理等目标。
华胜天成自主研发的天成云IaaS资源管理平台从客户建设IaaS云的业务需求出发,提供全面的解决方案[15]。该管理平台能对多样的虚拟化资源池进行统一管理,帮助客户实现数据中心的资源可见、能力可控、服务实时和质量可知。作为支撑数据中心云计算业务的核心系统,天成云IaaS资源管理平台具备资产管理、资源管理、服务管理、交付管理、监控管理、计费管理、报表管理以及系统管理能力,能实现针对云平台的一站式运维。
广通软件公司的Broadview NCC[16]云虚拟化控制中心帮助大型企事业单位构建私有云IaaS,为企业数据中心的云计算基础架构提供市场领先的IaaS私有云运维管理解决方案,从而提高企业的业务服务质量、降低业务运行成本。
此外,还有一些适用于中小企业的运维管理云服务平台。北塔软件推出的“代维宝”运维管理云服务平台,采用创新的SaaS云服务模式,使中小企业的运维成本更低、效率更高、管理更容易。银信科技推出的中小企业云运维平台也是一个运维管理云服务平台,有助于实现基础设施自动化,利用SaaS模式为中小企业提供低成本、高效率的IT基础设施标准化、自动化运维。
总体上,国内的云平台运维技术也与国外技术的两条技术路径类似。一部分运维企业将运维软件和服务的适用范围扩展到云环境、混合云环境,提供综合的云管理/运维平台,一部分运维企业将已有的IT运维软件与云技术、云平台相结合,最终以SaaS的服务模式交付给客户。
3 微服务云平台运维技术主要研究内容
3.1 微服务云平台的监控运维
云计算是需要按需分配计算资源,以提高应用程序的可用性和可扩展性,同时降低运营成本的一种技术[17]。在这种情况下,需要进行云资源管理以改善云,因此,对云资源的运行状态进行监控运维显得尤为重要[18]。
在构建大规模微服务的云平台智能运维过程中,为了清楚、完整、详细地收集整理表达运维知识,同时也为后续的云资源的动态调配以及故障分析等运维工作,需要获取微服务业务运行的全方位数据,识别并构建业务与资源、业务与日志的关联关系,及时掌握微服务业务的动态运行情况。
一个名为DARGOS[19]的分布式云监控架构被提出,其能够满足多租户云平台对物理资源和虚拟资源的监控。此外,一个基于微服务的物联网中间件分布式监控系统[20]也被设计并实现,该监控系统不仅可以从主机和容器中获取性能数据,还可以收集从前端到微服务的调用以及日志,并进行映射或重现。
除了重新开发云平台监控工具与系统,还有一些研究在现有监控运维系统进行改进以提高监控运维效率。
基于OpenStack的监控子系统采集到的监控数据特征以及局限性,针对基于微服务架构的复杂依赖关系以及细粒度监控问题,文献[21]提出了解决方案并对其进行评估,使得监测的数据量与未检测到的异常发生率大大降低。
黑匣子监控方法被用来跟踪大规模的微服务[22],能够对架构指标、应用性能和网络性能等进行监控,并且实现了透明性。此外,将微服务日志与黑匣子方法结合[23],以被动追踪方式进行监控,实现了应用透明和非侵入性,减少了收集的监控数据的大小。
国内也有一些研究人员和企业对微服务架构的监控进行研究与尝试。文献[24]以可扩展全链路应用服务监控为目标,设计并实现了一种柔性微服务监控框架,可用于监控微服务状态和不断变化的服务负载,并且为了避免单点故障,使用 Raft 算法增强了数据一致性。文献[25]公开了一种微服务应用全链路性能实时监测系统及其检测方法。该方法通过数据收集、数据存储、弹性伸缩配置和集成调度等模块的协调运作,实现对微服务性能的实时监控与分析。
企业对微服务架构的云平台监控也进行了尝试,并且进行了工业部署。国网山东省电力公司应用一种基于微服务开发模式的 APM 应用性能监控平台[26],利用APM探针采集监控数据,目前仍在建设中。应用性能管理架构工作流程如图3所示。
图3 应用性能管理架构
尽管APM 应用性能监控平台已经被应用到企业中,然而其具有侵入性的数据采集方式使其难以被广泛接受。除利用APM探针采集数据以进行监控外,还有基于微服务的调用信息获取监控数据以实现监控的方法。
文献[27]公开了一种全链路监控方法。该方法在接收到用户发送http请求后,生成一个调用链逻辑ID用于标记调用链。同时,利用微服务调用标记对微服务的调用顺序以及嵌套关系进行标记。最后,利用上述的调用链逻辑ID和微服务调用标识生成监控信息,对微服务架构进行全链路监控。文献[28]则通过发送给对应微服务生成的调用请求信息,并利用调用请求信息生成对应的监控数据标识,根据监控数据标识获取微服务的业务日志,以实现业务监控。
除上述利用对调用等信息进行标记的方法,还有嵌入额外的监控模块进行采集数据的方式。文献[29]提出了一种基于微服务架构的应用监控系统,并定义了响应时间、并发数和调用链相关监控指标。该系统采用集中分布式结构,包含客户端与服务器端,其中客户端嵌入监控对象收集监控数据;服务器端则汇总并分析监控数据,建立逻辑回归模型,确定调用链路在正常情况下的安全置信区域,并对异常情况进行报警。以及通过部署独立运行的采集模块与微服务通信,收集微服务之间接口调用的信息,并根据收集到的信息进行微服务运行状态的分析,可以将微服务的监控粒度细化到接口[30]。通过埋点,收集服务间的相互调用关系的数据,作为服务调用信息,对所述服务调用信息进串联和存储,建立服务调用链路,通过可视化界面,展示所述服务调用链路,以实现对服务链路的监控[31]。虽然基于微服务调用信息的方法可以实现全链路监控,但其额外嵌入的采集模块增加了企业部署的成本,同时影响系统性能。
3.2 微服务云平台的资源调度
微服务架构下,业务应用被分派到底层资源池中进行计算,然而资源配置的差异使得分配难度大大提高;同时,由于大规模微服务的应用,也对资源调配的实时性有更高的要求。因此,自动监测微服务的资源使用情况,做出即时的资源调度决策,实时资源调度作业,可以保障云平台上的微服务资源需求。云资源调度的基本流程框架如图4所示。
图4 资源调度基本框架流程图
一些研究对传统算法进行改进,计算云资源均衡状态,进而调度资源,以实现负载均衡[32-34]。文献[32]改进了传统的蚁群算法,该算法能够根据用户任务,计算云资源均衡、时间成本均衡和负载均衡方案,仿真实验证明了该算法可以有效地保持整个云系统平台的运载均衡。文献[33]则改进了传统的遗传算法,提出一种基于多精英协同进化的遗传算法,该方法具有更快的收敛速度以及更高的求解效率。同样地,文献[34]改进了珊瑚礁优化算法,融合better-offspring和multicrossover策略以提高算法收敛速度,该算法降低了调度成本的同时,增强了资源负载均衡。
虽然,针对云资源调度问题研究较为成熟,并且很多研究通过改进传统方法就可以实现较好的效果。然而,微服务之间的复杂调用关系以及云资源配置差异,使得这些方法难以直接应用于微服务架构上。
张鼎超等人设计的一个高性能计算环境的微服务运维平台[35]包含了服务部署、服务监控和服务伸缩等功能。其中服务伸缩功能通过监控多种指标数据以及指标负载计算缩放比例,进而部署资源。文献[36]根据访问流量和各微服务之间的业务关系,准确且全面地确定目标扩容微服务,随后对需扩容微服务对应的容器镜像实例进行扩容,实现资源调配。由于该方法是依据微服务的访问流量进行计算,具有一定的准确定性。文献[37]首先抓取微服务监控平台的实时监控的多元数据指标,并进行预处理,随后对处理后的数据进行线性回归的弹性伸缩容预测,并对预测结果进行服务资源弹性伸缩处理策略匹配。
除基于流量、业务关系等监控数据进行微服务缩扩容,还有基于负载指标进行微服务伸缩计算的方法。
文献[38]以非线性回归为核心,通过分析当前负载、已建立模型等进行提前资源调配,以提高实时性,降低响应时间,实现资源弹性供给。文献[39]根据微服务的实例运行数据,得到预定义负荷程度指标值并与预期值进行对比以计算扩容系数,根据计算的缩扩容系数调整微服务实例数。
文献[40]提出基于负载关系图的微服务自动伸缩方法。该方法定义了用于描述各微服务之间的负载强度关系的微服务负载关系图,并基于此图计算各微服务的伸缩需求。该方法在面对大规模微服务情况下,仍能保持高效的并行性。然而,该方法的触发条件使用阈值法,使得伸缩操作存在一定滞后性。
上述是根据流量、负载等指标,对微服务进行缩扩容处理的方法,以达到负载均衡。还有针对微服务任务、应用以及资源调配的方法,同样可以满足云平台上的微服务资源需求。
郭骏等人针对大规模微服务资源调度设计了新的调度系统[41],该系统的调度算法采用的模糊PID算法能够较好地兼容该系统。
文献[42]提出通过将各个微服务访问资源请求进行排序,对优先访问的资源进行锁定的方式进行控制的方法,减少了微服务访问的随机性以及由此引起的资源不合理利用。与之类似的,文献[43]根据微服务的预定状态信息和调度微服务的业务的权重确定微服务的重要性以及容量调节的紧迫性,进而合理的选择优先进行资源调度的微服务,从而能够准确定位业务的瓶颈微服务,及时优化业务执行效率。
针对微服务任务调度问题,文献[44]提出了一种面向交叉微服务链的任务调度算法,该算法融合蚁群算法与模拟退火算法,缓解了微服务调用链间出现的交叉资源竞争问题。
微服务容器调度系统[45]从临时节点中获取待转移微服务容器对节点运行参数的需求信息,将该需求信息与对个目标节点的实际运行情况进行匹配,随后系统可以自动地进行容器转移,提高调度效率。
文献[46]提出了一种云环境下拓扑感知的微服务应用调度方法。该方法能够对微服务应用整体执行全局调度,在考虑单个微服务的资源需求的同时,也兼顾了微服务整体拓扑特征,保障了集群整体资源利用率,降低了微服务应用之间的通信成本。
随着机器学习的发展,利用机器学习和神经网络进行预测,可以实现提前进行资源调度,进而提高资源利用率,增强负载平衡。
机器学习能够从大量数据中快速、准确地提取有效特征的优点,使其可以被应用到大规模微服务资源调配任务上。文献[47]提出基于机器学习技术的微服务任务调度技术,通过将数据位置及特征和计算任务类型或特征输入任务调度器,以机器学习预测的方式给出任务运行节点,有效判断相对优化的任务执行位置。
神经网络的非线性、并行性、高运算速度、高复杂度等特点,意味着面对大规模微服务资源调度问题上具有更高的适用性。文献[48]通过预先训练的第一神经网络模型预测新增微服务的资源悬崖和最优资源分配区,从而通过最优资源分配区为新增的微服务的资源分配提供更准确的参考,进而实现资源负载均衡。
3.3 微服务云平台的故障分析
故障诊断技术是支撑云平台实现智能运维的核心,是利用多种手段与技术,对故障信息进行分析、推理的过程。一个完整的故障诊断过程首先通过感知技术获取被诊断系统原始信息;随后利用特征工程对原始信息集合进行特征提取,得到有利于诊断故障的有效信息集合;对有效信息进一步处理,计算出能够反映故障模式的不变特征量;最后基于以上信息进行故障定位、成因分析等工作,进而确定被诊断系统状态,定位系统故障位置,反馈系统故障成因,提供系统故障解决策略。完整的故障诊断基本过程如图5所示。其中检测信息部分可以由监控系统提供监控数据,以及传感器技术提供原始信息。故障诊断技术的重点则集中在诊断结论部分,即故障分析。
图5 故障诊断基本过程示意图
随着大规模微服务应用的上云运行,系统软硬件形态、运行规模、系统结构与运行方式等日益多样化和复杂化,业务产生的故障隐患多种多样,业务系统节点内和节点间的关联影响越来越多变。这使得运维人员无法在大量监控告警事件中快速、准确地分析确定故障位置、故障原因,从而影响故障处理的实时性和准确性。
目前,微服务故障检测主要包括基于轨迹或图拓扑法、基于日志文件法和基于监控数据度量法,如图6所示。其中执行轨迹、关系依赖图、故障传播图等等均属于基于图或拓扑方法,其优势在于能够利用拓扑来描述微服务之间的相关联系,并且图的拓扑结构适合大规模微服务应用。
图6 故障检测算法分类图
文献[49-50]均基于执行轨迹进行微服务故障诊断。主要区别在于文献[49]收集服务组件的请求处理流的执行轨迹,而文献[50]则采用向系统注入故障并收集故障执行轨迹的方式;二者使用不同的编辑距离分别评估异常程度与相似程度,最终依据各自执行轨迹与评估结果,进行故障定位与故障成因分析。
服务关系依赖图可以很好地呈现各微服务之间的依赖关系,为运维人员提供清晰的可视化效果,帮助运维人员快速、准确地发现异常、故障并进行解决[51]。文献[52]采用先判异常后定位的方式进行故障根因定位。该方法首先获取微服务的性能指标数据,并判断是否出现异常;随后构建微服务依赖图,并采用反向追踪根因分析算法进行异常评分并排序,实现故障根因定位。同样地,文献[53]基于服务依赖图刻画监测到服务间的异常传播,利用回归分析建立异常服务集合;随后利用图中心度算法寻找故障服务,并定位异常API。
除此之外,基于故障传播图与基于图谱进行故障定位也有一些研究。基于故障传播图的微服务故障根因定位方法首先通过相关性分析构建故障传播图,随后利用改进的随机游走算法进行搜索故障节点,实现微服务故障定位[54]。基于图谱分析的微服务故障定位方法在微服务运行时实时更新维护图谱,其中图谱包括运行架构、服务部署、服务调用以及监控数据等等;在故障发生时,分析节点的监控数据并计算异常度,可以得到故障根因[55]。
基于日志法主要是收集日志文件,从中提取大量的日志告警数据信息,建立日志信息分析模型,并分析故障原因。
使用机器学习方法基于历史日志训练故障分类模型,以进行故障判断可以提高运维自动化能力。文献[56]将微服务日志数据按照时间间隔划分,随后进行特征提取,并选择朴素贝叶斯、支持向量机与随机森林3种分类算法训练,得到故障预测模型,证明了机器学习在故障分析任务上的可行性。为了避免对每一个微服务进行故障分析判断,提高资源利用率,降低故障分析成本;使用拓扑检测模型对微服务进行故障可能性排序,利用机器学习方法基于可能发生故障的微服务的日志进行训练,得到微服务异常判断模型[57]。
基于日志信息的方法与其他方法进行结合同样可以实现故障定位与分析。文献[58]首先利用包含异常的日志信息生成故障项目库,随后依赖对微服务的权重以及故障项目库得到频繁故障项目集合,利用频繁故障项目集构建故障树,实现快速故障定位。文献[59]通过构建完善的调用链跟踪体系,收集含有业务请求调用链信息的日志信息,随后基于调用链维度对日志信息进行聚合分析,结合实际情形给出相应分析策略,提高微服务系统的服务异常故障定位准确度。
基于监控数据度量法则是根据监控系统给出的监控数据信息,通过特定的算法分析时段内的系统性能,从而判断故障。方法[60]通过对业务进行异常检测计算异常时间窗口,并基于异常窗口内的调用链数据进行故障定位分析,实现故障根因自动定位。将神经网络与监控数据度量相结合,可以充分利用神经网络高复杂度非线性映射能力,故障分析时使用训练好的故障诊断模型可以对得到的异常数据指标图进行快速、准确的诊断[61]。
除上述方法外,随着深度学习的发展,其针对大规模数据的强特征提取能力,非常适合大规模微服务应用所产生多模态数据。文献[62]首次将深度学习方法引进微服务故障诊断中。该方法利用深度学习方法从已有的数据中进行学习发生故障的特征信息并建立模型,仿真实验也证明了深度学习方法在微服务故障监测中的可行性。
4 微服务云平台运维工作与相关技术发展趋势
4.1 微服务云平台运维工作
随着云计算技术的普及,以及企业的大规模微服务业务的应用,基于工业需求以及市场需要,微服务云平台运维工作的发展方向应向着智能化、自动化、可视化等方向发展,结合国内外研究现状与主要研究内容,可以将微服务云平台运维工作发展趋势概括如下。
1)运维智能化:云计算的迅猛发展驱使IT架构中云架构和传统架构走向融合。传统的运维服务难以满足新式架构,使得运维服务需要从单纯的人工模式发展为智能模式。此外随着IT系统越来越复杂和IT设备的多样化,传统运维“救火式”的被动故障处理能力已经严重影响了企业业务的发展,只有智能化的运维方式才能维持企业信息系统的安全、稳定运行。通过预测分析模型,自主定位问题、发现问题,综合分析之后上报信息,形成高度智能化的运维体系,可以极大地提高IT运维效率,保障企业云平台运行稳定。
2)运维自动化:为了能够快速响应业务用户需求,并满足云计算时代的大规模微服务业务变革需求,实现运维自动化是必不可少的。自动化技术不但能帮助IT人员从固定、烦琐的日常维护工作中解放出来,提高IT人员的工作效率;还可以使整个运维流程变得规范、高效,提高IT系统的运维效率,为企业的业务变革提供良好的技术手段和基础。
3)运维可视化:云平台运维不论是从基础环境监控,还是业务优化管理上来说都面临着一系列新的挑战。运维可视化可以做到屏蔽运维提供的服务背后的所有实现细节,而向用户提供一种高效、一致性、透明化、用户友好的服务。运维的自动化最终要实现可视化,复杂的运维工作流必须通过可视化来表达,可视化后的自动化才能让所有人理解一致、执行一致、结果一致。
4)运维多样化:云平台运维工作需要结合多个运维技术,单一的运维手段难以满足企业需求。目前,工业界已有很多单一化的IT运维产品,然而在复杂的云环境下无法满足IT运维的各类需求。因此,融合多种运维手段,将各种运维工作进行联动,构成具有相互反馈的环状结构,可以有效地提高云平台运维效率,保证系统健康。
5)运维标准化:随着云平台运维系统的不断推出,越来越多的运维手段也不断被提出,也就意味着越来越多样的接口被应用。在企业启用运维系统时,需要针对实际的云计算环境以及基础设施特征对运维系统进行兼容性改进,当底层环境发生改变,就需要对运维系统进行升级以兼容新的云环境,这就额外增加了运维成本。因此,形成通用的运维标准,不仅可以降低运维成本,还可以提高运维手段的创新。
4.2 微服务云平台运维技术
结合微服务云平台运维工作的发展趋势以及重点运维技术的研究情况,分别针对微服务云上全链路监控、微服务云资源保障以及微服务复杂故障分析3个重点运维技术的发展趋势进行展望。
1)全链路监控不仅为了满足本身对整个云平台的监控需求,还为资源调度、故障分析等运维工作提供数据支撑,应以多维度、多指标、多角度进行全链路监控;此外,传统监控手段往往需要使用探针进行侵入式监控,不仅会降低性能,还提高落地成本。因此,监控运维可以以多维数据监控、全链路感知动态监控、非侵入式旁路监控3个方面为目标。
2)资源调度的目的是将异构多云的场景进行统筹整合,未来可以将机器学习方法与传统算法进行融合,结合监控指标数据、用户请求、资源配置等多因素,通过匹配资源需求与资源供给,实现微服务任务、实例数、计算资源动态调整,以达到负载均衡,降低响应时间。
3)故障分析是通过现有的信息进行系统的故障诊断与定位,并对故障进行清理保障云平台运行正常。传统的人工故障分析,往往处于被动分析状态,并且大规模微服务应用也使得定位更加困难。因此,主动式故障分析将是未来的发展趋势,建立故障预测模型,利用已有信息进行故障定位,判断故障类型并提供故障解决方案,实现故障分析自动化、智能化,提高故障分析实时性与准确性,保障云平台运维效率。
5 结束语
综上所述,微服务云平台运维工作主要包括微服务监控运维技术、微服务云资源调配以及微服务故障分析。监控运维技术为后面二者提供高质量,多维度的监控数据支撑;云资源调配则依据资源监控数据以及故障分析反馈决策进行横纵资源调整;故障分析依靠运行监控数据以及资源调度情况,实现故障定位与处理。
随着人工智能、云计算技术、物联网技术等多种技术的发展,以上3种重要的运维手段融合多种技术,并通过组成相互反馈的循环结构,形成完整的运维系统,实现运维工作智能化、自动化、可视化、多样化以及标准化。未来将极大地保障微服务架构下云平台的运维能力,支撑服务应用稳定高效运行,提高各企业的IT运维效率。