一、故事背景
物理学有四大神兽:芝诺的龟、拉普拉斯的兽、麦克斯韦的妖、薛定谔的猫。而我在多年的工作中,经常遇到软件系统的两大“玄学反问”:
玄学反问1
A:系统有问题,某某功能现在使用不了。
B:不可能!在我这里是好的啊?
玄学反问2
A:系统慢是因为近期遇到性能瓶颈了。
B:不会吧!之前都是正常的啊?
每当遇到这些“玄学反问”,都要去解释一番。次数多了,我觉得有必要整理成科普资料,便于在今后复用、提高沟通效率。本文仅对“玄学2”做科普。
二、故事开始了...
2.1 “下午来”书店开张啦
话说,佟掌柜突来奇想,想开一家书店。于是她租了个店铺,亲自去采购了几十本书,就开业了。
一天,虫大闲逛,恰好路过这家“下午来”书店,被佟掌柜姿色所吸引,于是就迈步进去看看。最终,虫大架不住佟掌柜的巧言令色,买了两本书才离开。
书到手了,总要读读吧。但别说,虫大读完后,觉得自己的境界提高了不少,出去都觉得高人一等。于是他觉得还应该去买书、读书,提高自己的精神修养。
2.2 书店生意好起来啦
虫大踱步到“下午来”就愣住了,只见门口排了10多个人,有虫二、虫三...,他如果排队,应该叫虫十八了。
等不及、绝对等不及。虫大装作大VIP,冒着其它虫虫们看待大尾巴狼的鄙夷目光,直接走到书店门口。
虫大:呵!掌柜的,生意越来越红火了,恭喜恭喜!可这么排队不是办法啊?
佟掌柜:可不是吗,可我一个人忙不赢啊。虫大:你干嘛不招个小工帮忙呢?
佟掌柜:对哦,我怎么没想到?虫大:你是推销高手,肯定以后店面生意更好。你也别抠抠搜搜的,直接招5个小工来,储备“高并发能力”,为以后扩大经营做准备。
佟掌柜:太对了!那,今天要买啥书?给你打5折。
2.3 伙计们可闲啦
虫大再次看完5本书后,又来到书店。这次店门口没排队了,可进了门,发现佟掌柜有点愁眉苦脸的。
虫大:掌柜的,怎么了?
佟掌柜:你看看,招了5个小工。可是,就莫小贝、郭芙蓉还比较忙,剩下李大嘴等3人都闲着哪。我还要开工资、管吃住。虫大:是哦。你可以给书商写信,就说每月十五日本店采购新书,欢迎大家来推销,扩大存书数量。然后在城门口粘贴个广告,就说来本店买书可累计积分,积分可抵扣现金。而且工作日下午来本店买书,还可打9折。创造货源、客源双丰收。
佟掌柜:对哦,我怎么没想到?
2.4 怎么又排队啦
虫大再次读完了5折买回来的3本书,又又来到了书店。咦~,怎么又排起长队了?
虫大:掌柜的,生意真好啊!
佟掌柜:可不嘛,多亏了你的主意,今天给你打3折。
虫大:哈哈,那我就不客气啦。佟掌柜:还要请教你。客人多了,伙计们也忙起来了,钱虽然没少赚,但客人们对排长队等待相当不满意呢。
虫大:确实,你这店面不大,也不适合招更多的伙计了。你觉得慢在哪里呢?佟掌柜:现在书籍的品类数量都多了,书商每次来都把货一放就走了。你看虫七,他跟莫小贝说要买励志类书籍。莫小贝就要跑到那一大堆书籍中翻查很久,才能找出来两三本可以推荐的书,太费时了。尽管有5个伙计,但马力全开也忙不赢。
虫大:明白了。各类书籍都是混乱堆放的,拟采购的书越多,越难以找到。给你推荐个人,叫吕秀才。他家里书籍多,但摆放整齐,他可是收纳高手。
佟掌柜:对哦,我怎么没想到?
2.5 经营步入正轨啦
吕秀才上岗后,先是说服佟掌柜买来几个大书架,然后把书商卸下的大批书籍分门别类,整整齐齐地摆放到书架上。然后给莫小贝、郭芙蓉、李大嘴等人培训,让他们掌握快速查找算法。
经佟掌柜测试,以前10多分钟都完成不了的工作,现在1分钟就能完成!并且吕秀才说了,以后还可以加书柜、加书籍,而伙计们的工作效率基本保持不变,来再多的客人也不怕啦。吕秀才把这套方法叫“书籍库索引”、“算法优化”。
佟掌柜赚得盆满钵满,每日喜上眉梢,还按照这个模式又在川云市租了更多的服务店铺,开分店,因为一个店面总是有空间上限的,也不可能装下几百个书架啊。
2.5 怎么不早说了啦
虫大已经是“下午来”书店如假包换的VVIP,可以1折买书。如果不是虫大抱着“书非买不能读也”的初心,佟掌柜完全可以给他免费。
这天虫大又来到了书店。
佟掌柜:VVIP好啊,问你个问题。
虫大:掌柜的,生意兴隆!啥问题?佟掌柜:多亏你的指点,可你怎么知道这些点子的呢?
虫大:实不相瞒,我从你这里买的第一本书就是《系统架构设计》,这些点子里面都有。佟掌柜:原来如此,你怎么不早说了啦。我如果也通读了宝典,就可以一步到位了。
虫大:那可不行!你想啊,你刚创业时,没那么多资金,怎么雇得了那么多伙计、买得了那么多书籍、聘得起吕秀才这样的人才?再说了,即使有那么多资金,采买全套设备还要投入更多时间,在生意没有起色前,投入太多不是浪费吗?做生意又不是想亏钱。
佟掌柜:对哦,我怎么没想到?虫大:所以,我也是一点点提供建议,不能够早说了啦。其实我还有个点子。
佟掌柜:洗耳恭听,啥好点子?
虫大:今天是会员日大促,又赶上《瓦尔登湖》是现今最畅销的书。你看李大嘴,往返取这本书都跑了不下十次了,这样下去他这个胖子要累死。所以,书店完全可以把热销书直接摆在柜台上,减少往返查取的次数,做到秒级送书到客。我还可以给你推荐个人,老白擅长这门“书籍缓存”技术,他可以从分析书籍销量来推荐热销书,并摆在柜台上。
三、故事讲完了
在虫虫们排队忍耐力有限的前提下,书店可以接待多少客人,受李大嘴查找一次书籍要多少时间、以及书店有多少个“李大嘴”的共同影响。所以:
软件系统的整体性能=单次交易处理耗时*系统可用并发量
减少单次交易处理耗时的对策有:更优秀的程序算法、使用缓存技术、更高性能的CPU...
增加系统可用并发量的对策有:更大内存、更多服务器、数据库集群...
从以上清单可以看出,想得到更好的系统性能,必然增加更多的资金投入、时间投入。因此,在某个软件系统新建、试用期,甚至投产一年内,追求完美的性能不一定是好事。因为这时候准备的“超级书店”,只有书报亭的业务量。优秀的架构设计,是保证随着业务量增长,系统性能可以平稳提升,而不是一次到位。
甚至也不可能一次到位。因为性能优化涉及的深度广度太多,远不是本文科普列举得完的。也因此需要对系统持续监控、不断优化,也因此敏捷迭代模式越来越受欢迎,而瀑布模式因为有“不能及时响应变化”的原罪而衰落。
玄学2:
A:系统慢是因为近期遇到性能瓶颈了。
B:不会吧!之前都是正常的啊?
再次回答这个“玄学问题”就容易了,之前正常:
- 可能是没有那么大的并发量
- 也可能是没有那么大的数据量
- 也可能是“李大嘴”这个程序的算法在小数据量下才能正常工作
- 也可能是数据库没有建立索引
- 也可能是CPU老旧或内存不足
总之,问题就在那里,关注如何解决问题,当你埋头工作的时候,转机已经悄然发生。
“下午来”,是陪女儿读书时,租的学区房附近一家卤肉店的名字,又叫“好又来”。这家卤肉原汁原味,没添加香精色素,卖相一般但味道得到了大家的认可,生意很好。
故事内容是为了科普,姓名纯属虚构,请勿对号入座。工作中能和大家一路打怪升级、解决问题,得到了不少帮助和支持,心存感激!
各式各样的经历构筑成了我们的人生