交易策略怎么做成软件测试,交易流程容灾及测试策略_堇翳的博客-程序员宅基地

技术标签: 交易策略怎么做成软件测试  

请求拦截

请求拦截是指当我们的系统压力比较大的时候, 牺牲掉对我们系统访问的一部分重要性稍低的请求,直接对请求进行拦截,减少系统压力,保障系统的稳定性。具体拦截哪些业务方的请求,什么接口,或者接口允许访问的最大QPS是多少,这些最好能做成可配置化,在紧急情况下可以灵活调整。

强弱依赖设计

在系统设计时,需要考虑所有系统内部访问的其他系统接口为强依赖还是弱依赖。比如对于某个功能点,内部需要调用其他系统的接口A和B,如果A出现异常则该功能不可用,而B出现异常,不会影响该功能的整体可用性,那么我们需要将A设计为强依赖,B设计为弱依赖。

强弱依赖的设计对于系统整体的可用性非常重要,特别是在极端访问量的情况下。我们要尽可能的保证系统功能不受弱依赖系统的影响。 并且强弱依赖需要独立的测试场景来持续保障,以防强弱依赖的设计因为代码的不断改动而发生意料之外的改变。

容灾测试方法

业务降级、数据备份、以及请求的拦截这类的容灾场景一般都会有自己独立的业务测试方法,也会有对应的开关去控制,只需将开关设置到对应状态,使用和普通业务测试相同的方法即可。

对于自动流控的测试,可以将阀值调整的开关设置为最低值,即等同于业务的降级测试;也可以将阀值设置为一个较低的值,并模拟依赖系统的请求变慢,再进行业务测试来达到触发流控的条件。

对于强弱依赖的测试可以直接模拟和依赖系统之间的网络不通,或者网络变慢,从而模拟依赖系统返回的请求超时或者变慢的场景,再进行业务测试观察系统各功能点的可用性。具体模拟网络不通或者变慢超时的方式如下:

模拟网络不通

1、使用iptbables直接模拟系统和某系统之间的网络不通:

sudo iptables -A OUTPUT -o eth0 -d   -j DROP

这个命令需要在我们被测系统上执行,并且将需要模拟的依赖系统的IP替换掉。它的主要作用是将我们被测机器往依赖系统这个IP上发送的所有的网络包给丢弃掉,依赖系统接收不到任何我们发送的包,自然也不会做任何回应。相当于系统接口的调用没有返回。

2、使用iptables直接模拟系统的某个端口不通

sudo iptables -A OUTPUT -o eth0 -p tcp  --dport -j DROP

这个命令同样需要在被测系统上执行。它的主要作用是将我们被测机器通过这个端口发送的所有的包给丢弃掉。

3、清除所有设置的iptables规则:iptables –F

4、查看当前设置的所有iptables规则:iptables –L

模拟应用变慢和超时

添加对某个依赖系统的流量控制,下面的命令需要按照顺序执行:

1、使用ifconfig查看默认的网卡信息,一般默认为eth0

2、使用tc流量控制命令将eth0网口过来的数据包延迟1000ms

sudo tc qdisc add dev eth0 root handle 1: prio

sudo tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000

sudo tc qdisc add dev eth0 parent 30:1 handle 31: netem delay 1000ms 10ms distribution normal

3、添加从某ip过来的流控规则(替换**.**.**.**为需要流控的ip)

sudo tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst **.**.**.**/32 flowid 1:3

查看已经设置的限流规则: sudo tc filter list dev eth0 parent 1:0

删除已经设置的所有的限流规则: sudo tc filter del dev eth0 parent 1:0 prio 3 u32

42/4<1234>

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35079766/article/details/119128689

智能推荐

Jrebel激活服务_不死哦的博客-程序员宅基地

(亲测有效!!!)jrebel idea插件激活,亲测可用:在jrebel server处,写上:http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce如果出现激活过期的情况,请重新生成guid,替换原来的guid即可邮箱随便写,即可激活。---------------------作者:cjwcj...

MFC嵌入opencv窗口之读取图像_Lily安的博客-程序员宅基地_opencv窗口嵌入mfc窗口

在初始化函数中加入如下代码在mfc的图形控件嵌入opencv的图形窗口, 以便利用opencv进行画矩形,直线,圆,椭圆。MFC进行鼠标操作时无法显示到图像上,所以嵌入opencv窗口显示图像。void Ctest2Dlg::OnBnClickedReadImg() {cv::namedWindow(&amp;quot;view&amp;quot;, cv::WINDOW_AUTOSIZE);HWND hWnd = ...

ubuntu安装qt_bubuxindong的博客-程序员宅基地

qt的repo位置:https://launchpad.net/~beineri例如安装qt5.8:https://launchpad.net/~beineri/+archive/ubuntu/opt-qt58-trustysudo add-apt-repository ppa:beineri/opt-qt562-xenialsudo apt-get updatesudo...

Day9 进程同步锁 进程队列 进程池 生产消费模型 进程池 paramike模块..._weixin_34097242的博客-程序员宅基地

进程同步锁:当运行程序的时候,有可能你的程序同时开多个进程,开进程的时候会将多个执行结果打印出来,这样的话打印的信息都是错乱的,怎么保证打印信息是有序的呢?其实也就是相当于让进程独享资源。 1 from multiprocessing import Process,Lock #引用函数 2 import time 3 def work(name,mutex): ...

loss函数汇总_BlackEyes_SY的博客-程序员宅基地

文章目录BCE lossCE lossFocal lossBCE lossb这里指的是binary,二分类交叉熵损失。在使用BCELoss时需要在该层前面加上Sigmoid函数,公式如下:缺点:正类别是训练的时候更加关注的部分,而错分的负类别没有被关注。???https://www.zhihu.com/question/422946096/answer/1541228837CE lossCrossEntropyLoss,交叉熵损失。Focal loss何凯明大佬提出的。优点:它更加关注难样

计算机系统时间_qq-3191907415的博客-程序员宅基地

计算机系统时间与主机箱内置主板电池:1.关系:a.主板电池是用于记录计算机系统时间的,即维持系统时钟的准确性。b.主板电量不够时,系统时间会回到出厂日期。c.主板电池记录计算机启动时要用到的硬件信息,即维持CMOS的BIOS信息。2.主板电池常识:a.如今的主板电池一般都是CR2032z。b.使用过程中不可以充电。认为主板电池可充电是个误解。c.CR2032包装上面或电池体上标明锂...

随便推点

oracle erp闪退,ORACLE ERP系统经常出现的问题及解决办法_weixin_39725844的博客-程序员宅基地

目前企业员有很大的缺口,更是有不少人士想要从事这一行业,小编曾从事ORACLEERP系统客户服务工作多年,在ERP系统维护工作中,深深体会到:ERP的系统维护工作看似平常,实则大有学问。ORACLEERP系统是一个大型集成的软件系统,是一个企业全面共享的信息数据库,主要包括制造、分销、财务等多个模块,各个模块相互关联,数据共享。系统的维护工作包括日常维护及突发事件处理,日常维护是对系统的运行情...

LED 发光二极管压降_weixin_30817749的博客-程序员宅基地

常用发光二极管的压降1. 直插超亮发光二极管压降 主要有三种颜色,然而三种发光二极管的压降都不相同,具体压降参考值如下:红色发光二极管的压降为2.0--2.2V黄色发光二极管的压降为1.8—2.0V绿色发光二极管的压降为3.0—3.2V正常发光时的额定电流约为20mA。2.贴片LED压降红色的压降为1.82-1.88V,电流5-8mA绿...

uva 12096_苏格拉没底——的博客-程序员宅基地

#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;set&gt;#include&lt;stack&gt;#define ALL(x) x.begin(),x.end()#define INS(x) inserter(x,x.begin());using names...

Android Studio重新安装时,未弹出默认安装sdk的选项_C Y x.的博客-程序员宅基地_android studio 重新安装sdk

在重新安装的过程中,没有出现上图中的步骤,导致软件没有sdk,无法使用我开始怀疑是Android Studio没有卸载干净,但是用遍全网所有方法,包括.gradle之类的文件已经全部卸载完毕,还是解决不了。最后才发现是环境变量配置的问题所以要想完全卸载Android Studio,除了删除.gradle之类的文件,还需要删除环境变量中和SDK有关的变量,最后问题完美解决...

Simulink Control Design_干了这碗汤的博客-程序员宅基地

Linearize models and design control systemsSimulink Control Design lets you design and analyze control systems modeled in Simulink. You can automatically tune arbitrary SISO and MIMO control architectures, including PID controllers. PID autotuning can b

C++ bind函数(std::bind、placeholders::_1)_乘凉~的博客-程序员宅基地

对于bind函数的介绍以及底层实现网上好多资料可以查,现在我记录一下bind函数的使用。并记录一下placeholders::_1的作用。按我的理解通俗解释bind函数:fun1(a,b,c);func2 = bind(func1,t1,t2,t3,t4);假设func1函数需要有三个入参即a,b,c;通过bind函数作用后,我们就可以通过调用func2来调用fun1,那如何给fun1传参呢,当然也是通过fun2来传参,t1位置就代表传给fun1的第一个参数,也就是参数a,t2位置就代表传给fun

推荐文章

热门文章

相关标签