利用简单方法解决外部系统回调测试环境,多套环境便捷切换

本文主要是介绍利用简单方法解决外部系统回调测试环境,多套环境便捷切换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文由JoyMao发表于TesterHome社区网站,点击原文链接可与作者直接交流

这个是简单的措施来解决外部系统回调测试环境时面临多套环境的方法。

背景:

部门有10套测试环境并发,每套环境都有一些同样的应用来接受外网或者内网内的其他系统的webhook回调处理,但回调地址只能有一个:每次版本变化,对应应用ip都会发生变化,需要及时去修改,存在管理混乱的问题。

过程

解决的方法很多,比如服务化、proxy、k8s…复杂度不一,不改动现有测试发布环境的基础上,利用proxy是最方便的,但需要提供方便改动proxy转发的方式。
这时候nginx的dynamic_upstream插件就能解决,他提供http接口来管理upstream(server的加、删、上线、下线),非常方便。
我们要做的就是在发布系统中建立一个管理页面来管理,结构如下:

此插件比较古老(古老不代表过时),github地址:https://github.com/cubicdaiya/ngx_dynamic_upstream
readme中有具体的API,这里就不再粘贴了。

附:安装插件及nginx过程(centos为例)

[1]
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
cd /home
mkdir callback_switch
[2]
cd callback_switch
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz --no-check-certificate
tar zxvf pcre-8.45.tar.gz
cd pcre-8.45
./configure
make && make install
[3]
cd ..
wget https://nginx.org/download/nginx-1.16.1.tar.gz --no-check-certificate
tar zxvf nginx-1.16.1.tar.gz
wget https://github.com/cubicdaiya/ngx_dynamic_upstream/archive/refs/tags/v0.1.6.tar.gz --no-check-certificate
tar zxvf v0.1.6.tar.gz
[4]
make nginxbin
cd nginx-1.16.1
./configure --prefix=/home/callback_switch/nginxbin --with-http_stub_status_module --with-http_ssl_module --with-pcre=/home/callback_switch/pcre-8.45 --add-module=/home/callback_switch/ngx_dynamic_upstream-0.1.6
make
make install
[6]
ln -s /home/callback_switch/nginxbin/sbin/nginx /usr/sbin/nginx 

后续优化

因为插件本身接口响应不利于UI端使用,我用go-iris重新包装了下他的http接口,配合vue-element实现对应的管理UI,实现只要配置好nginx的uptream zone后,可以十分方便的进行回调请求接收应用的设置。

原文由JoyMao发表于TesterHome社区网站,点击原文链接可与作者直接交流


今日份的知识已摄入,埋头学技术也不忘抬头看路 >>>

这篇关于利用简单方法解决外部系统回调测试环境,多套环境便捷切换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846550

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很