【技术小说连载】新三国外传——草船借箭_程序

 

小说连载系列是我第一次尝试的新的技术讲解方式,希望通过小说的形式将技术细节讲解清楚。

第二篇中长篇连载小说《新三国外传》,主要讲解一些架构、新技术以及程序员工作中的一些轶事,希望大家能够喜欢。

 

郑重声明:小说人物和故事情节取材自三国演义,作者融入了技术元素,做了大量修改,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。

 

 


 

 

 

周瑜自从上次与诸葛亮谈完微服务+docker兵法之后,一直对诸葛亮的才华念念不忘。

 

他隐隐地觉得,今后东吴最大的敌人不是曹操,而是这个诸葛亮。

 

但是现在如果贸然将他杀了,传出去恐惹人笑,今后谁还敢来与东吴合作?

 

周瑜左思右想,终于心生一计。

 

军营

 

这天,周瑜邀诸葛亮、鲁肃来到军营参观。

 

周瑜:“诸葛先生,前几天咱们一起讨论的微服务+docker的兵法,我已经命将士们进行操练,你看我这docker大军,已经可以轻松自如切换各种微服务。”

 

说着,他转向大军一声令下:“来,演示给诸葛先生看看!”

 

docker大军根据之前编排的阵型,迅速变成了战斗状态,整个过程速度非常快。

 

诸葛亮:“好,兵贵神速,有周都督用兵如此,破曹指日可待,哈哈哈。”

 

周瑜:“先生过奖。只是我还有一事相求。”

 

诸葛亮:“哦?都督请讲。”

 

周瑜:“现在docker大军已经可以迅速变换阵型,但是却没有实际上战场操练过,我怕到时候真正上战场面对曹操大军会有问题呀。”

 

诸葛亮一听就明白:“周都督的意思是,要对系统做压力测试?”

 

周瑜:“没错,既然是压力测试,我希望用线上真实流量,这样才能看到系统的真实表现。只是这流量不知诸葛先生可有办法造出来?”

 

诸葛亮:“请问都督要多少流量?”

 

周瑜:“十万并发,持续两个时辰。”

 

诸葛亮:“什么时候要呢?”

 

周瑜迟疑了一会儿:“现在大战随时可能爆发,给你十天时间如何?”

 

诸葛亮:“十天?太久了吧?都督也说了,大战随时爆发,我只需三天,三天之后给都督十万并发持续两个时辰的线上真实流量。”

 

周瑜:“哦?军中无戏言!”

 

诸葛亮:“愿立军令状!”

 

周瑜拿来纸笔,诸葛亮立下军令状。周瑜拿来看过之后,微微一笑:“好,三天后我再来找先生。”

 

鲁肃

 

诸葛亮走后,鲁肃找到周瑜。

 

鲁肃:“都督为何让诸葛亮去造流量啊?”

 

周瑜:“哼?造流量?造流量看似简单,但是要造出真实流量,十分难,每个请求里面有很多参数,这些参数还不能完全随机生成,要根据实际情况进行建模,有些还需要大量的计算,即使这样也很难接近真实状态。”

 

周瑜:“这次是诸葛亮自己立下军令状,休得怪我。造流量需要计算,我CPU与内存均不与备齐,三天之后去验收,如果发现有某个字段明显与真实情况不符,是自己用很low的逻辑mock出来的,直接把诸葛亮拖出去,格杀勿论!”

 

鲁肃:“啊?都督,大战在即,先杀自家军师,恐于战不利呀。”

 

周瑜:“子敬有所不知,此人有经天纬地之才,我若不早除之,后必为东吴大患。”

 

诸葛亮

 

两天过去了,诸葛亮在江边喝酒,鲁肃找了过去。

 

鲁肃:“都督派我来问,先生流量造得怎么样了?”

 

诸葛亮:“子敬兄,你还有脸来问?都督只给了我二十台1C2G配置的线上淘汰下来的旧服务器,随便跑个算法都嘎嘎作响,还如何计算造流量?”

 

鲁肃:“我此番正是为此事而来,先生,我今晚安排一艘船,你赶紧坐船离开东吴吧。”

 

诸葛亮:“诶,这倒不必,我只有一事相求。”

 

鲁肃:“先生请讲。”

 

诸葛亮:“你给我准备一些大的硬盘,10T的那种,每台机器上挂一个,我自有妙用。明天请先生到江上与我一起喝酒。”

 

大雾

 

第三天凌晨,江上泛起了大雾,诸葛亮和鲁肃来到江边的小船上喝酒。

 

诸葛亮一声令下:“开船!”

 

鲁肃:“诸葛先生,你还有心思喝酒,今天下午,都督就该来找你要流量了。”

 

诸葛亮:“此番我正要去取流量。”

 

鲁肃:“先生,我们去往何处?”

 

诸葛亮:“正向曹营而去。”

 

鲁肃大吃一惊,他赶紧站起身来看了看,果然是去往曹营。

 

鲁肃:“先生这是干嘛?难道欲和我同归于尽?”

 

诸葛亮哈哈大笑:“子敬兄,只管喝酒,我自有打算。”

 

曹营

 

曹操正在睡觉,突然听到江上一片呐喊声,急忙起床拿起装备,命将士们列阵。但是去江上一看,江上雾气太大,什么都看不见。曹操一声令下:“HTTP远程请求!”

 

一瞬间,几万的HTTP并发流量向诸葛亮打来。

 

而诸葛亮这边,代码业务逻辑仅仅是空实现,只是通过切面技术,将请求的流量的各个参数都记录下来,写到日志文件中,之见那10个T的硬盘,迅速写满了几个G。

 

曹操一看:“返回这么快?看来对面实力不容小觑啊,来人,加一倍并发。”

 

小十万并发的流量打过来,全部进入了诸葛亮的日志中,并且依旧是瞬间返回。

 

诸葛亮命船队再次接近曹操。

 

鲁肃:“诸葛先生,你的业务逻辑根本没有实现,还敢接近曹操,如果曹操派兵来袭,我等皆束手就擒啊!”

 

诸葛亮:“曹操生性多疑,我料他必不敢派兵来袭,只会用HTTP远程请求退敌!”

 

曹操这边倒是疑虑:“这周瑜到底多少兵?我这么大并发还压不退他?”,于是再命加一倍并发。

 

近二十万并发流量往诸葛亮这边来袭,全部进入诸葛亮的日志中,10个T的硬盘已经渐渐写了1T,2T,5T……

 

天快亮了,10T硬盘已经写满,江上大雾也散了,此时,诸葛亮命船队返回东吴,并在途中大喊:“谢曹丞相送流量!谢曹丞相送流量!”

 

曹操定睛一看,原来是诸葛亮,而且代码中根本没有实现业务逻辑,自己白白送了几百T流量,懊悔不已。

 

周瑜

 

下午,周瑜来到军营,只见军士们都在清点流量,自己也吃了一惊。

 

他走到一台机器面前,用cat命令看了一下,流量十分真实,没有半点伪造痕迹。

 

诸葛亮走到周瑜面前:“都督,请问这流量可否用来训练docker大军?”

 

周瑜强颜欢笑:“啊……可以,可以。”

 

周瑜用诸葛亮的流量对docker大军进行压测,测出了不少bug,一一进行了修复,为之后赤壁之战的胜利打下了坚实的基础。

 

诸葛亮也用自己的智慧,巧妙地化解了周瑜的计谋。

 


 

本文以耳熟能详的草船借箭,讲述了互联网公司中常见的压测中的核心问题:如何产生真实线上流量,对系统进行有效压测。一种常见的做法是将线上流量存一份日志,或者存入kafka等消息队列。不知道大家是怎么做系统压测的呢?

 



 

 

【技术小说连载】新三国外传——草船借箭_程序_02