听过多泳道吗?赶紧进来看看它怎么建设的~

简介: 多泳道,顾名思义,就是像游泳一样,有多个游泳道,他们互相不影响。 测试环境多泳道,其实是有一个主泳道,多条次泳道,主泳道是作为稳定的泳道,它可以访问其他泳道的服务,其他泳道是不稳定的,这样的话,可*保证测试环境的稳定性

前言

多泳道听过吗?它为了解决什么问题?它又长什么样子?具体实现是怎么做的?

多泳道样子

多泳道,顾名思义,就是像游泳一样,有多个游泳道,他们互相不影响。 测试环境多泳道,其实是有一个主泳道,多条次泳道,主泳道是作为稳定的泳道,它可以访问其他泳道的服务,其他泳道是不稳定的,这样的话,可以保证测试环境的稳定性

多泳道解决什么问题

背景:在测试阶段,我们经常会听到测试同学经常抱怨,测试进度被某个流程卡住,某某背锅开发同学在排查。有时会导致多个测试任务卡住,影响整个流程正常运作,所以我们需要保证测试环境的稳定性

其次在同一时间,有多个需求同时进行,那么如果A同学改了一个代码,导致test环境炸了,是不是我们也需要等卑微的小A同学修完bug才能继续。多泳道可以解决抢占问题,提高开发效率,就是测试同学通过自己的泳道访问那条修改的代码。而其他同学访问稳定的test环境。

image.png

多泳道建设

多泳道长什么样子

image.png

如上图所示,测试环境作为稳定泳道来运作,这样就不会由于开发代码一直卡流程。如果我们只是特定的服务做更新的话,其他服务都是稳定的,我们只需要在特定节点路由到那个需要测试的服务,这样提高测试环境的稳定性。

怎么建设?


完整步骤

  1. 泳道创建:工单实现不同泳道的快速创建,比如说有个需求A,同一时间有个需求B,可以通过工单快速将dev1、dev2 开放平台两个版本跑起来 (稳定泳道:权限,经常变动泳道:开放平台..)
  2. 流量打标:网关进行改造,在工单创建泳道的时候顺便有个域名,dev1.com,dev2.com,同时指向稳定网关test环境,网关对流量进行打标tag。负载到对应环境的服务。
  3. RPC层负载:由于我们链路非常短,看不出这一层的负载,网关在调用权限模块之后,再调用开放平台服务,具体到哪个服务,这个也算rpc层负载。
  4. 数据隔离: dev1.com -> dev1 pod - >dev1数据库
为啥需要通过工单来创建?我们可以看下腾讯云方案,资源的自动化,弹性扩展。理想的话,我们也需要实现运维资源的自动化。

在二三点的时候,其实在上一篇文章讲过,大家感兴趣可以去看看~

数据隔离方面,可以做影子表、影子库。或者我们物理隔离统一5个环境,对应5个mysql实例。


测试流程

  1. 现在需求A、需求B来了,我们拉了两个分支,现在都提测了
  2. 创建工单,新建dev1、dev2环境,它会生成对应的域名指向test网关,然后我们通过全链路灰度,实现test网关通过域名维度,指向对应的服务
  3. 测试同事通过不同域名,来验证不同的逻辑,然后去不同的数据库验证数据准确性。
  4. 测试通过之后,将分支合并到test,构建test环境
  5. 泳道删除,资源回收

多泳道 VS 多物理环境

我们来对比下两个方案的优缺点,这样会有直观的比较。

形式 优点 缺点
多物理环境 物理隔离,操作快捷 资源浪费,测试环境会有不稳定的开发代码
多泳道 逻辑隔离,工单快速创建泳道,减少资源消耗 需要对中间件进行改造,比如说dev1、dev2 redis、mq、数据库都需要隔离

相对复杂一点的多泳道模型

image.png

参考 blog

本文借鉴以下文章:

相关文章
|
缓存 Kubernetes API
Kubernetes Operator 开发教程
# 1. 概述 我们将 CRD, Controller, Webhook 三者合起来叫 Operator。一个 Operator 工程一般必须包含 CRD 和 Controller,Admission 是可选的。如果说 Kubernetes 是 "操作系统" 的话,Operator 是 Kubernetes 的第一层应用,它部署在 Kubernetes 里,使用 Kubernetes "扩展资源
11462 1
Kubernetes Operator 开发教程
|
监控 前端开发 Java
错误码如何设计才合理?
对于错误码的设计,不同的开发团队有不同的风格习惯。本文分享阿里文娱技术专家长统对于错误码的看法,希望从错误码使用的不同场景讨论得到一个合理的错误码规约,得到一个面向日志错误码标准和一个面向外部传递的错误码标准。
12814 3
错误码如何设计才合理?
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
992 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
|
Cloud Native 容器 Kubernetes
基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道
本文简要讨论了使用流量泳道来实现全链路流量灰度管理的场景与方案,并回顾了阿里云服务网格 ASM 提供的严格与宽松两种模式的流量泳道、以及这两种模式各自的优势与挑战。接下来介绍了一种基于 OpenTelemetry 社区提出的 baggage 透传能力实现的无侵入式的宽松模式泳道,这种类型的流量泳道同时具有对业务代码侵入性低、同时保持宽松模式的灵活特性的特点。同时,我们还介绍了新的基于权重的流量引流策略,这种策略可以基于统一的流量匹配规则,将匹配到的流量以设定好的比例分发到不同的流量泳道。
73822 16
基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道
|
Java 测试技术 数据库连接
使用Spring Boot编写测试用例:实践与最佳实践
使用Spring Boot编写测试用例:实践与最佳实践
1772 0
|
人工智能 自然语言处理 测试技术
基于LangChain手工测试用例转接口自动化测试生成工具
本文介绍利用大语言模型自动生成接口自动化测试用例的方法。首先展示传统通过HAR文件生成测试用例的方式及其局限性,随后提出结合自然语言描述的测试需求与HAR文件来生成更全面的测试脚本。通过LangChain框架,设计特定的提示词模板,使模型能够解析测试需求文档和HAR文件中的接口信息,并据此生成Python pytest测试脚本。示例展示了正常请求、非法请求及无效路径三种测试场景的自动化脚本生成过程。最终,整合流程形成完整代码实现,帮助读者理解如何利用大模型提高测试效率和质量。
|
前端开发 API 开发者
乱花迷人眼 - 一文彻底看懂 package.json 中的各种 dependencies
package.json 中存在各种各样的依赖定义:dependencies、devDependencies、peerDependencies、optionalDependencies、bundleDependencies,很容易让初学的开发者晕头,到底有什么区别。
|
负载均衡 网络协议 应用服务中间件
HAProxy 与 NGINX:全面比较
【8月更文挑战第21天】
3171 0
HAProxy 与 NGINX:全面比较
|
存储 算法 安全
|
缓存 Linux 调度
Linux服务器如何查看CPU占用率、内存占用、带宽占用
Linux服务器如何查看CPU占用率、内存占用、带宽占用
8796 0