转转测试环境docker化实践

测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。

1 测试环境演进
1.1 单体环境

转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。

1.2动态环境+稳定环境

随着微服务化的进行,转转的服务数量是急速扩充的。分支并行开发增多,共用环境造成的互相影响也逐渐增多。单体环境已经不能满足我们的需求。新的组织形式被提了出来。动态环境部署修改的服务和一些必要服务。稳定环境部署和线上一致的服务。同时我们开发了一个环境平台去管理环境的申请到回收的整个生命周期。阶段性的满足了我们诉求。

存在问题:请求进入到稳定环境之后,调用将会在稳定环境中,无法调用到动态环境的服务。导致被测服务之前的所有服务、mq的生产方都要部署到当前测试机上,即使这些服务没有任何变化,随着集群规模的继续扩大,对资源的消耗飞速增加。

1.3 动态环境+稳定环境(ip路由)

对于上面的问题,我们期望能做成请求的流量是动态环境下优先,如果没有的情况下再请求到稳定环境上,这样测试机上只部署发生了变化的服务和入口服务(必需)就可以了。随后和架构运维一起实现了ip路由的功能,就是将ip作为泳道名称向下传递。

这个方案上线后,资源使用量下降30%左右。在2019年上线后的两年内,转转经历了和找靓机合并,芯片供应紧张导致机器长时间无法采购到,在这个背景下,保证了转转环境的应用。但是问题也日益的凸显。

2 环境使用中的问题


从大的方面来讲:系统稳定性,资源成本,使用效率三个方面互相制衡。在成本(包括采购困难)这个限制下,旧机器无法淘汰导致稳定性问题。资源不足,现存的测试机使用率就降不下来,稳定环境就无法保持内存30%空闲率的下限,稳定性就会成问题。测试环境就需要严格的回收策略,导致用户的使用体验和使用效率下降,如:到期回收和资源空闲回收,肯定会导致部分使用中的环境被回收掉,尤其是大的内存环境,对应大的项目,恢复起来慢,影响也大。已有的架构下不能做到三者兼得,或者说不能做到我们希望的妥协。具体的问题如下:

2.1 资源的不足

业务的增长和集群数量的增长,叠加服务器采购不到的情况,机器资源很紧张。测试资源池3.8T, 高峰占用率80%。剩余资源散落在20几台物理机上,导致超过40G内存的机器都是比较难申请的。

2.2 资源的浪费

在机器资源不足的情况下,还存在机器资源浪费的情况,现有的方案,机器申请下来内存是固定的,不能自动的扩容和缩容,随着环境中被测服务的逐渐上线,最新版本会被同步到稳定环境中,动态环境和稳定环境中重复的服务会越来越多。但是无法将测试资源回收到资源池之中。

2.3 稳定性问题

机器的稳定性

众所周知,测试环境的机器基本都是线上过保的机器,年龄不一,但是一般比较大,损坏是常有的事情,我们高峰期一个月损坏了5台物理机。对业务产生直接影响。

部署过程简要介绍

先简单介绍下机器启动部署过程:

系统的稳定性

整个初始化部署,流程7-8步,各个环境都可能出现问题,日常稳定性不足。

在上面3个方案的历史迭代中,积累了大量的历史包袱。每次部署都要要对测试配置文件中的数据库、redis、mq、zk等配置进行替换,易出错,不易维护,工程规范化不足。

在环境的构成中,环境中每次添加删除服务,都要重新计算nginx和host,依赖长,容易出错。

日常使用中,内存不足的情况下,无法自动扩容,只能重新申请环境,时间成本高。

Kvm资源方案生态差,维护成本高。

以上这些过程中的问题,每周会有25个左右环境问题反馈,我们每周都需要8h左右的运维时间。为了解决上面的问题,我们开发了系统错误分析工具,虚拟机重启工具、机器资源报警工具、机器存活监控、稳定环境整体迁移工具等众多管理员工具帮助用户和我们解决日常问题。整体来讲日常的维护成本是很高的。用户用着有很多问题,也很不爽。

3 解决方案:动态环境+稳定环境(标签路由)
3.1 解决方案

系统底层架构修改

由于以上的问题,我们和架构运维重新设计了环境平台的方案。我们最终采用了docker + 稳定环境的方案。ip路由变成了标签路由,一个环境不再是一台机器上部署多个服务,而是一个环境下,多个docker组成,多个ip组成,如下:环境yyy由服务B和D组成,ip分别为192.168.5.1和192.168.6.1。

这样镜像初始化、agent初始化过程被干掉。环境的大小限制不再是一个宿主机大小决定,极限情况下一个环境可以包含转转所有的服务。单个环境容量不再是问题。 通过k8s的特性,部署时会新启动一个节点,并且新节点启动成功之后,下线旧节点。保证了服务在部署过程中,服务不中断。

工程规范化

推动rd升级服务,将测试配置修改为正常的配置,从而下掉平台的配置替换。

nginx中心化

去掉每个环境上的nginx,消灭ng部署生成过程的问题。通过系统联动使用运维的中心化nginx。

host配置

推动删除不必要的公共host,在服务升级的过程中推动RPC的host调用方式升级为服务管理平台,剩余公共host采用内部dns能力进行解决。

新问题

在制定新方案的过程中,一个目标是解决之前的依赖问题,一个就是尽量减少新方案带来的使用方式上变动,减少用户使用成本。环境docker化之后最大的影响是什么呢?一、ip变成了标签,不再是唯一ip。

二、服务每部署一次,ip变一次。

ip没了,那么入口host怎么配置?ip变了,那么如何登录到机器上?如何查看历史日志?如何进行单元测试?解决方案:

转转之前有泛域名解析的能力,如app.zhuanzhuan.com带标签可以写为app-${tag}.zhuanzhuan.com。
请求whistle配置中 增加:192.xxx.xxx.xxx app.zhuanspirit.com excludeFilter://*/api reqHeaders://(Global-Route-Tag:test1234)。注:192.xxx.xxx.xxx为中心化nginx。

增加webshell 解决ip变动带来的登录成本增加。

增加历史日志查询功能,解决ip销毁后历史日志查询问题。

增加本地化标签路由的功能,解决单元测试每次输入ip的问题。变成标签设置。注:在后面的docker推广过程中,我们发现方案中,我们漏掉了远程debug场景下,ip变动的问题。最后通过开发了一个idea插件和环境平台联动解决。

新的运营方式

新的技术方案中,资源的最小管理节点由之前的一个kvm变为标签中的一个服务。在测试服务上线之后,环境平台会自动同步最新代码到稳定环境,之后将测试标签中刚刚上线的服务删除,回收资源。从而避免资源的浪费。

成果

部署过程缩减为:服务镜像启动 + ng配置同步。步骤极大的缩减。稳定性、效率提高。在宿主机挂掉的情况下,k8s自动调度到新的节点。进一步保证稳定性。资源成本、稳定性和使用效率三方的制衡被打破。三方面充分的得到了提高。目前:

用户问题:减少95%,并且大项目测试中,环境问题消失了。

申请时间:由28分钟到5分钟以内。

资源占用:3200G到1200G。

总结

在制定了这个方案之后,转转在架构、运维和工程效率三个部门互相配合情况下,1个月内完成开发,3个月内完成了服务升级。1年内完成了整体功能的推广。取得了丰硕的成果。

docker化之后,改变了整个环境的使用生态。现在,要用一个测试环境,申请则立即可用。过程中不再有任何心力消耗,不再有中断。并且资源管理的最小节点变为一个服务。环境系统的底层技术架构在我们看来处于业内目前的最优的方案,在系统、用户层面上做到了资源,性能和效率三者的整体性提升和平衡。整个系统是相对成熟的,可以预见的是,在未来很长一段时间内系统不需要再进行系统结构上的升级。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1205615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析笔记09:Python条件语循环 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

JExten:基于Java模块系统(JPMS)构建健壮的插件架构

在Java中构建可扩展应用程序时,开发者常常从一个简单的问题开始:"如何让用户无需重新编译核心应用程序就能添加功能?" 旅程通常始于标准的 java.util.ServiceLoader,它提供了一种发现接口实现的简单机制…

2025年上海盐雾试验箱厂商综合实力排行榜单,砂尘试验箱/高低温交变量热试验箱,盐雾试验箱源头厂家口碑推荐榜

在制造业加速向智能化、精密化转型的背景下,盐雾试验箱作为环境可靠性测试的核心设备,其性能稳定性与技术服务能力直接影响产品质量验证的准确性。当前行业面临技术同质化严重、售后服务响应滞后等痛点,企业需通过技…

全渠道融合能力突出 这些知名呼叫中心品牌值得选

随着企业数字化转型的深入推进,呼叫中心已从单一的电话接听渠道,演进为集语音、在线客服、社交媒体、AI智能于一体的全渠道客户互动中枢。在激烈的市场竞争中,一个稳定、智能、易扩展的呼叫中心系统,已成为企业提升…

2026山东最新资产评估_房地产评估_股权评估_损失评估_数据资产评估机构首选推荐山东卓越全程土地房地产评估有限公司:山东专业机构,全方位服务值得信赖.

在经济活动日益复杂、资产类型不断丰富的今天,专业的评估服务成为企业决策、资产处置、金融信贷等领域不可或缺的关键环节。2026年,在山东及周边地区,山东卓越全程土地房地产评估有限公司(简称“卓越全程评估”)凭…

遇到MWORKS建模问题啦?来MoHub帮你快速解决

模型刚跑起来,然后——叒报错了。 你盯着那行神秘提示看了三秒: ber,怎么还不行? 翻文档?试参数?再跑一遍? 到底是为什么啊? 有没有人管管! ——有的。 但&#x…

全方位解析球机摄像头七大核心规格

球机摄像头规格齐全,主要体现在以下七个方面: • 外形尺寸:常见规格有 4。5英寸、6.5英寸等,适配多样化的安装空间与监控覆盖需求。 • 分辨率:涵盖200万像素(19201080)、500万像素&#xff…

基于Java的工厂车辆智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 工厂车辆智慧管理系统结合了现代信息技术,针对传统管理方式中数据分散、效率低下等痛点进行了优化。该系统涵盖了车辆管理、客户管理、司机管理等多个模块,并引入GPS设备和驾驶行为管理等功能进行实时监控与数据分…

基于Java的工厂进度智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 工厂进度智慧管理系统旨在提供一个全面的信息化管理平台,涵盖从会员管理到生产任务管理等多个功能模块。与传统选题相比,该系统不仅涵盖了丰富的业务场景,还具备高度定制化和扩展性优势,能够…

基于Java的工厂食堂餐饮智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 工厂食堂餐饮智慧管理系统摒弃传统系统,创新性地引入了精细化管理和数据分析功能。它不仅涵盖了菜单菜品管理、原材料供应与订单处理等基本模块,还进一步深化至会员充值、促销活动及库存监控等方面,提高…

市面上常见的呼叫中心系统有哪些 靠谱款盘点可作参考

在当今数字化沟通日益重要的商业环境中,呼叫中心系统已成为企业与客户建立联系、提升服务质量、优化运营效率的关键工具。面对市场上琳琅满目的呼叫中心解决方案,企业如何选择一款既稳定可靠又功能强大的系统?本文将…

CF1290C Prefix Enlightenment 题解

Solution 不难注意到“任意三个子集的交集为空”等价于每盏灯最多同时出现于 \(2\) 个集合中。 设第 \(i\) 盏灯出现在第 \(p_i,q_i\) 两个集合中,若没有则为 \(0\)。设 \(f_k\in \{0,1\}\) 表示是否选集合 \(A_k\)。…

◆comfyUI教程◆第2章11节 Latent基础与应用控制 - 实践

◆comfyUI教程◆第2章11节 Latent基础与应用控制 - 实践2026-01-23 16:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

2026山东最新山东卓越全程土地房地产评估有限公司资产评估_房地产评估_股权评估_损失评估_数据资产评估机构首选推荐:山东专业机构,全方位服务值得信赖.

在经济活动日益复杂、资产类型不断丰富的今天,专业的评估服务成为企业决策、资产处置、金融信贷等领域不可或缺的关键环节。2026年,在山东及周边地区,山东卓越全程土地房地产评估有限公司(简称“卓越全程评估”)凭…

Matlab调用downloadCIFARData和loadCIFARData出错

问题 使用的代码 % ImageLearn.m datadir = tempdir; downloadCIFARData(datadir); [XTrain,TTrain,XValidation,TValidation] = loadCIFARData(datadir);调用downloadCIFARData和loadCIFARData出现以下错误 >>…

顶刊中的“水刊”!IEEE Trans系列,含金量拉满,3天初审,中一篇可躺平!

🔥 🔥 🔥 🔥本期,小编给大家推荐的是一本【计算机合作刊】,其创刊于2014年,由IEEE出版社出版,目前位于JCR1区,中科院2区,小类位于中科院1区&#xff0c…

springboot基于微信小程序的高校毕业生公考助手管理系统

背景分析高校毕业生公考助手管理系统基于SpringBoot和微信小程序开发,旨在解决公考备考信息分散、效率低下的问题。随着公务员考试竞争加剧(2023年国考报名人数超250万),传统备考方式存在资源整合不足、个性化服务缺失等痛点&…

从黑土到云端,富裕县年货节开启乡村振兴数字新篇

当龙江大地仍被冰雪覆盖,一场连接乡土与全国的年货盛宴已在哈尔滨温情启幕。2026年1月15日,“云购年货乐购富裕”网上年货节在哈尔滨新区数字贸易产业园区正式举办,作为活动核心组成部分的展厅环节,不仅是“富裕优品”的集中亮相&…

2026年国产控油粉底液专业深度测评:排名前五品牌权威发布

2026年国产控油粉底液专业深度测评:排名前五品牌权威发布 随着国内美妆研发实力的崛起与消费者需求的精细化,国产控油粉底液市场已进入技术驱动、功效为先的新阶段。面对琳琅满目的产品,如何选择一款兼具长效控油、…