关于性能(Performance)和可伸缩性(Scalability)
某餐厅
场景一,午餐时间
食客:老板,怎么菜还没上来,我们都催了几次了
服务员:很抱歉,正好是中午时间,您看现在来吃饭的人太多了不是,我再帮您看看
餐厅的业务做大了,开始接收网上定购
场景二,
用户(电话投诉):我在你们网上下了个订单,怎么提交了三分钟都没有反应
服务员:很抱歉,这两天天气太冷,大家都不外出了,都到网上下单了,网站访问量太大,所以比较慢,您再看看结果出来了没
对最终用户而言,菜上的慢,或者网页响应慢,都是性能问题。做软件的或者是用过软件的,应该是多多少少对于这种问题有所体会。
但从服务提供者的方面,还需要把问题细分一下。
从餐厅的角度,菜上的一贯的慢,这是性能问题;但如果上菜的速度本来还可以,但随着用餐人数急剧下降,这就是可伸缩性问题。
从网站的角度,页面响应一贯的慢,这是性能问题;如果页面响应的速度本来还可以,但随着访问人数急剧下降,这是可伸缩性问题。
当谈到性能的时候,往往是指特定负载条件下的系统响应时间,而伸缩性则是保持比较稳定的响应时间的情况下增大系统有效负载的能力。性能和可伸缩性,由于其关联性,往往容易混淆起来。而这种混淆,在一些情况下,可能影响沟通的效果。
找到一片文章,是关于如何编写可伸缩性应用程序的。对于基于Windows和.Net的开发人员和架构师,是值得一读的参考资料。看看它的题目:利用Windows Server 2003开发高性能应用程序。