如何实现一个好用的全链路多测试环境(HTTP篇)

这篇具有很好参考价值的文章主要介绍了如何实现一个好用的全链路多测试环境(HTTP篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

背景

随着公司的发展,研发的系统和开发人员会变得越来越多。但是测试环境却始终只有一个,所以久而久之,我们就发现研发经常遇到如下问题:

  1. 测试环境太少开发人员太多,一个人服务bug影响所有人测试

如何实现一个好用的全链路多测试环境(HTTP篇),全链路多测试环境,http,网络协议,网络

  1. 代码冲突增加,许多人同事代码合并到一个测试环境分支,经常存在很多代码冲突,需要花大量时间解决
  2. 有冲突的需求无法再一个测试环境进行测试,需要多个测试环境

解决思路

解决上面的问题很简单,就是部署多套测试环境,但是在在微服务系统架构下不同服务(比如我们有库存服务、商品服务、订单服务)可能是由多个团队进行开发维护的。

如果每个团队有单独的一套开发联调环境,那么每个团队不仅需要维护自己环境的微服务应用,还需要维护其他团队环境的自身所属微服务应用,效率大大降低。同时,每个团队都需要部署完整的一套微服务架构应用,成本也随着团队数的增加而大大上升

比如 订单服务需要部署的自己的测试环境,可能需要部署
productorderpay等服务多个服务

实际上订单小组可能只关心order服务,其他服务自己不关心,也不用去维护。

只需要自己在测试调用其他服务的接口的时候稳定不报错,不影响自己测试就好。

然后如果商品小组也想要自己的测试环境,也需要再部署一套如下系统

productorderpay等服务多个服务

总体成本是非常高的,那么有没有其他更省事实力的方案呢?

多测试路由架构

此时可以使用测试环境路由的架构来帮助部署一套运维简单且成本较低开发联调环境。测试环境路由是一种基于服务路由的环境治理策略,核心是维护一个稳定的基线环境作为基础环境,测试环境仅需要部署需要变更的微服务
多测试环境有两个基础概念,如下所示:

  1. 基线环境(Baseline Environment): 完整稳定的基础环境,是作为同类型下其他环境流量通路的一个兜底可用环境,用户应该尽量保证基线环境的完整性、稳定性。
  2. 测试环境(Feature Environment): 一种临时环境,仅可能为开发/测试环境类型,测试环境不需要部署全链路完整的服务,而是仅部署本次有变更的服务,其他服务通过服务路由的方式复用基线环境服务资源

各个小组需要自己的测试环境只需要关心自己系统的多测试环境,在调用其他系统的时候调用他们稳定的基线环境所有服务只需要维护一套基线环境,其他小组想要增加自己的测试环境只需要自己多部署几个自己的特性环境,而不用管其他小组的服务。

实现原理

总体实现思路如下:

如何实现一个好用的全链路多测试环境(HTTP篇),全链路多测试环境,http,网络协议,网络

我们大致实现的就是pay1调用的就是order1,如果order1不存在,则调用基线环境,即pay。这样我们就是想要多少个测试环境,就有多少个,相互依赖的服务如果没有对应的测试环境就会调用基线环境

实现技术支持

要实现上面路由我们需要如下技术支持

  1. 网关支持通过不同的标签选用不同的服务
  2. 网关和所有业务系统需要支持全链路标签传递
  3. 所有业务系统需要支持打标签

网关路由这一块我们需要通过扩展spring cloud loadbalacer的接口DelegatingServiceInstanceListSupplier来支持自定义服务路由

全链路标签透传我们需要通过skywalking进行全链路标签透传

服务pod打标我们需要通过k8s的服务发现对服务进行打标

总结

总得来说我们基于服务编排、流量染色、动态自定义路由实现了http的多测试环境。

如果我们要实现全链路,还需要实现MQxxl-job等三方中间件的多测试环境隔离文章来源地址https://www.toymoban.com/news/detail-804977.html

参考

  • spring-cloud-tencent 测试环境路由

到了这里,关于如何实现一个好用的全链路多测试环境(HTTP篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基线监控:基于依赖关系的全链路智能监控报警

    更多技术交流、求职机会、试用福利,欢迎关注 字节跳动数据平台微信公众号,回复【1】进入官方交流群 字节跳动数据平台开发套件数据开发团队自研了 基于依赖关系的全链路智能监控报警——基线监控, 目前已在字节跳动内部得到广泛使用,覆盖抖音、电商、广告等1

    2024年02月01日
    浏览(36)
  • linux环境编程(1): 实现一个单元测试框架-2

    在之前的文章中, 介绍了如何实现一个类似gtest的单元测试框架, 完整的项目代码可以参考这里: https://github.com/kfggww/cutest . 近期对cutest的实现做了一些修改, 包括: Test Suite的声明宏, 修改为TEST_SUITE 增加Test Suite的声明宏TEST_SUITE_WITH. 可传递Suite的init和cleanup函数, 在Suite中每个Cas

    2024年02月12日
    浏览(33)
  • java基础 - 实现一个简单的Http接口功能自动化测试框架(HttpClient + TestNG)

    已知现在已经用Spring boot框架搭建了一个简单的web服务,并且有现成的Controller来处理http请求,以之前搭建的图书管理服务为例,BookController的源码如下: 在搭建一个Http接口功能自动化测试框架之前,我们需要思考几个问题: 1、http请求的发送,使用什么实现? 2、接口返回的

    2024年02月05日
    浏览(53)
  • 一个简单好用的C语言单元测试框架-Unity

    Unity是一个用于C语言的轻量级单元测试框架。它由Throw The Switch团队开发,旨在简化嵌入式系统的单元测试。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在

    2024年01月21日
    浏览(55)
  • 一个简单好用的C++语言单元测试框架-GoogleTest

    GoogleTest 是由 Google 开发的一个用于编写 C++ 单元测试的框架。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在实际项目中,单元测试往往由开发人员完成。

    2024年01月19日
    浏览(95)
  • C# 如何设计一个好用的日志库?【架构篇】

    相信你在实际工作期间经常遇到或听到这样的说法:   “我现在加一下日志,等会儿你再操作下。”   “只有在程序出问题以后才会知道打一个好的日志有多么重要。” 可见日志的记录是日常开发的必备技能。 记录日志的必要性:   当业务比较复杂时,在关键代码

    2023年04月17日
    浏览(35)
  • ​无需测试环境!如何利用测试脚手架隔离微服务,实现功能自动化

    想在不建立完整测试环境的情况下测试微服务? 想在将变更推送到主线分支之前完成测试? 这是我们在进行项目交付时经常遇到的难题。最近,当我们开始一个新的项目,为客户构建一个新的聚合平台时,我们希望将尽可能多的测试和自动化转移到流程的合并前执行。 我们

    2024年02月10日
    浏览(67)
  • 【协议设计与实现】Linux环境下,如何从0开始设计并实现一个网络协议之一——需要考虑的因素

    🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向) 🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd 🌐系列专栏:TCP/IP协议 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注✨、点赞👍、收藏📂、评论。

    2024年01月17日
    浏览(43)
  • 浏览器打开一个网页的全流程

    互联网日常生活中最为常见的行为便是在浏览器输入一个网址, 然后浏览网页内容, 这样一个简单的行为背后有哪些技术细节呢, 本文将做一些介绍. 全流程可拆分为4个主要步骤 将域名解析为IP地址 与目标主机建立TCP连接 (三次握手) 发送与接受数据 与目标主机断开TCP连接 (四

    2024年02月08日
    浏览(50)
  • Vue 本地环境 http改成https测试

    前言 很多在线上的网站都是https连接,加密连接,是因为他购买了ssl证书,在Nginx配置了https。 之前我们在文章讲过,本地环境下vue.config.js就相当于线上的Nginx配置文件,在本地也可以配置。 为什么在本地环境要配置https了,因为像摄像头SDK和等等东西都是在https环境中运行。

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包