线上引流压测工具Meteor

来源:互联网 发布:设计软件的模板 编辑:程序博客网 时间:2024/04/27 14:01

压测可能一般都会从技术角度上分读场景和写场景,因为在读和写上两种情况都不一样,举个例子 对于价格请求来说,一般都是后台修改价格后,前台大量的浏览价格,这种明显读场景占比90%以上的业务,对于写的压测是没什么意义的。而对于下单的操作来说大部分都会是写的情况,可能包括接口写 ,数据写等等。所以区分场景的压测对压测复杂度来说会减轻很多,对压测的模型来说又会真实很多,比如,对于读场景我们就可以做线上引流压测,就是把线上的读场景放大倍数导入到同比例的测试环境或者部分生产环境进行压测。这种压测的模型结果真实度很高。

那么以前说起线上读的引流压测大家可能都会考虑到TCPCOPY,今天不想讲TCPCOPY,线上有很多文章介绍,如下架构图:



具体链接如: http://www.open-open.com/lib/view/open1337907254136.html 

对于TCPCOPY 个人感觉它的场景太单一,而且搭建起来很复杂,比如如果有的请求是不可以重复提交的这种引流复制就没有意义了吗?,基于这种考虑,我们内部开发了一个引流压测的软件。如下



首先:我们会在Web服务器上的TCP/IP层进行捕获(Capture 包括对对域名,URL的过滤)

其次:Capture会复制一倍流量UDP单播方式发送到CopyServer(复制节点)

再次:复制节点通过UDP组播的方式发送给整个环路节点上的sender(通过交换机组播复制方式)

最后:sender放大流量倍数发送到测试环境或生产环境,(同时支持一些定制开发功能)


整个工具用python开发(对于C语言来说降低定制化难度)(capture经过压测,在TPS5000-8000的时候 会对CPU有些损耗(40%左右))

同时copyserver在解决组播丢包等问题上进行了一些优化。

整个链路上sender是完全可以发布既可用的,同时又支持定制化,如对sendpool节点可以把某个峰值的流量存储,指定时间发送到测试或部分生产环境。


对于这套工具我并不是想说,它会比TCPCOPY有多好,我想说的是,由于对于一些业务来说TCPCOPY已经不好满足我们的需求,同时之前安装TCPCOPY的时候也遇到很多坑,何不研究下原理,做一个合适的轮胎呢。

对于现在的软件环境来说经常听说不要重做轮胎,但是重做轮胎,并不一定意味着没有意义,其实对于任何一个公司来说都一自己独特的业务特点。用开源软件不是不好,但是里面的坑难道你一定会越过吗,这个老轮胎是否真的用的很舒服呢,对于这样还不如研究下轮胎结构,用新的材料新的模式搞个自己的呢。拿来主义并不一定最好。

0 0