项目环境稳定性指标建设之路

本文探讨了项目环境在研发流程中的重要性,详细分析了环境创建、部署、重启等任务的现状,包括任务猝死、单机瓶颈和重复执行等问题。通过引入分布式分片任务、分布式锁和流程引擎重构等技术,实现了任务处理的成功率提升至99%以上,创建时间降低至100秒以内,异常率控制在1%以下,显著提升了系统稳定性。
摘要由CSDN通过智能技术生成

引言

项目环境是集团研发同学联调测试必不可少的平台型工具之一,其环境申请与释放动态灵活,环境间流量相互隔离,在开发和上线前的个人自测以及全链路联调场景下有着不可替代的重要作用。一个稳定易用的项目环境能极大地提高一线研发同学的测试体验,通过对环境简化抽象、屏蔽基础设施和微服务复杂性,为业务提供稳定可靠、简单易用的测试环境。

项目环境作为与变更或某个项目的生命周期保持一致的灵活环境,相较于固定环境(如主干,预发,正式)有着不同的特质,其环境申请和释放与变更生命周期绑定,部署和重启更是其中的高频操作。随着项目环境覆盖范围的推开,在每天开发高峰期时期,每秒同时运行的工单量(环境创建、部署、重启、删除等)最高能到数千余次。这为项目环境本身的稳定性提出了极高的要求。

在项目环境建设初期,每一次创建、删除、部署等工单主要通过单机执行,通过内部流程引擎发送消息以及定时任务推动状态流转。在实践过程中随着工单量的上涨逐渐出现了任务重复运行,任务无迹象消失,任务猝死等问题。而研发流程的改造和推进也给项目环境提出了更高要求,但是以上问题的出现限制了项目环境承载更大范围使用的可能性。

本文通过梳理项目环境生命周期内创建、部署、重启、删除等任务的特点后,去除了流程引擎对消息的依赖,使用分布式分片任务,分布式锁实现任务的分布式运行。通过使用工厂模式,责任链模式,以及领域驱动设计的思路对流程引擎进行重构。最终实现在环境数量翻数百倍以上的情况下,日常以及预发环境平均创建成功率达到 99% 以上,单个环境创建时间由数百秒以上降低至 100秒 以下。工单量每秒并行执行翻近百倍的情况下,系统异常率低于 1% ,单次任务执行时间均值降低 8x%。

技术实践

文章架构

现状

1. 流程梳理

环境创建部署等流程如下所示,研发同学创建变更后项目环境会自动开始创建流程,非云原生应用在环境创建完成后便开始异步申请机器资源,等待资源扩容完成后,会自动开始部署流程。云原生应用会在部署过程中生产资源。项目环境资源生产完成后建立隔离标与机器的映射关系,即打标流程。三种工单(创建、部署、重启)的核心流程如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值