【问题背景】
某项目执行压测脚本,因直播录制回写接口没有添加挡板,导致流量包欠费,从而使功能不可用。当天已经停止压测,可在接下来两天里仍然能够监控到流量接入。
【业务链路】
接口功能:
开启录制功能,直播结束后,回调该接口,保存直播时录制的视频
业务链路:
根据这业务简要流程图可以看出:使用直播录制功能,通过直播录制录制回写接口访问第三方服务公有云服务,然后将录制的视频数据存放到公有云的数据库中。因为需调用第三方服务,所以这个过程是需要消耗资源包产生流量费用的。所以,在压测过程中避免资源的浪费,需要在接口请求中加入挡板。
【挡板作用】
在接口请求头上加入挡板,就可以绕过公有云的扣费服务
挡板作用逻辑:
可以看出,加入挡板后,可以将流量下发到数据库中,并绕过公有云的收费推送。这样可以大胆的执行压测,而不用担心无因流量包耗尽而功能不可用的风险了。
【扣费机制】
公有云服务的流量包为预付费机制,先预付流量包的费用才能使用该服务。当流量包用完之后,会停止流量接入。而项目组在检查流量包耗尽之时,在设定时间段内,每天续费一个包的标准执行。
这就可以解释上述的背景问题了。周五当天,执行压测时,因请求流量过多而导致服务因欠费而不可用。超过流量包部分的10W个请求的流量在列队等待,周六自动续费的8W的流量包,预留的2W流量为周日续费时扣除。
【实际压测结果对比】
1、带挡板压测结果:
压测集群:节点数10个
实际并发数:30
压测时间6分钟
2、不带挡板压测结果:
压测集群:节点数1个
实际并发数:10
压测时间6分钟
通过对比可以看出,加入挡板,对于压测结果不会产生实际影响。
【总结】
执行压测时,对于需要调用公有云服务的接口,可以加入挡板机制,从而避免压测过程中触发流量包耗尽而服务不可用,影响压测的实际结果。