网站性能优化策略的选择

性能优化到何处为止?
服务器君一共花费了215.053 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

人生三苦:选择,后悔,绝望。为了避免后两项,所以才绞尽脑汁去做出明智的选择。人人都无时无刻不面临选择。做软件开发的,从初级,到中级,到高级,所掌握的知识和技术越来越多,面临的选项越来越多,对选择进行评估也越来越困难和复杂,一项选择所造成的影响也越来越大。所以,做软件做到架构师,就是和人生三苦之一的“选择”整天打交道的职业。

对于互联网应用网站架构师而言,性能优化是他工作的重中之重。可以这么说,如果不需要考虑性能优化,特别是在经费,人力和时间限制下进行性能优化,那么,在互联网应用软件开发中所遇到的许多问题都不是问题。性能优化到何处为止,采用什么方案,是架构师经常面对的选择之一。如果性能优化不够,那么,网站无法应对用户负载,用户会因为系统反应速度慢而流失,整个项目都可能失败。再者,如果在性能出现问题后再去优化,那么就会面临许多重复工作和软件修改问题,系统越大,修改的工作量也越大。另一方面,也有可能过度追求性能优化,从而造成项目复杂度和开发工作量增大,使得项目完工时间延迟,造成商机贻误的问题。所以,为了帮助架构师做出正确的选择,应当有一些基本原则。

要为决定性能优化到何处为止定下指导原则,就必须对架构师进行性能优化的招数进行分析和分类,只有这样,才能确定这些原则。

通常,架构师进行性能优化的招数可以分为简单招数和复杂招数,简单招数包括,索引,算法,查询优化,缓存,合并数据访问调用从而减少对数据库的访问次数,等等,这些招数,通常会花费不多,又足够有效。

复杂招数呢?有表的垂直分割和水平分割(data partition),数据replication,transaction management优化,使用批处理和代理来代替在线实时处理,等等。所有这些复杂招数都会一定程度的增加软件开发的复杂度,增加工作量。

为什么说这些复杂招数会增加工作量呢?举例来说吧,transaction management优化。在这方面,可做的优化有,使用inline sql transaction,而不是client side transaction,使用auto commit transaction 模式,缩短由于跨语句transaction而造成的transacton lock延时。但是,这时,你就必须考虑到出现异常时transaction不完整而造成的数据不一致给系统造成的影响,这可能会导致编程复杂化。这种做法,在实现一些非关键业务(比如不涉及到金钱等)时也是一种选项。此外,对于分布式的transaction管理,有现成的系统性的方法,比如微软的distributed transaction coordinator(dtc),使用起来也相当的简单方便。但是,dtc因为是通用的解决方案,所以它不可能进行很多优化, dtc通常会使得性能下降一倍左右,如果要处理特别巨大的用户负载,连这方面也可以进行优化,那就是不用这些通用的现成的解决方法,而是根据具体问题设计专门的方法,如果使用专门定制的transaction管理方法,还可以把性能提高50%左右,对于大系统,这也是很可观的提升和节省。

有了对这些招数的分类,那么再根据项目的经费,人力和时间要求的情况,就可以比较容易做出选择了。简单的优化招数,应当尽量的使用,不会造成工作量的过多增加。复杂的优化方法,在经费人力时间紧张时,如果不是涉及最基本的数据,最常用的功能,应当尽量避免。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1858,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1858

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《代码之美》 聂雪军 (译者)

《代码之美》介绍了人类在一个奋斗领域中的创造性和灵活性:计算机系统的开发领域。在每章中的漂亮代码都是来自独特解决方案的发现,而这种发现是来源于作者超越既定边界的远见卓识,并且识别出被多数人忽视的需求以及找出令人叹为观止的问题解决方案。《代码之美》33章,有38位作者,每位作者贡献一章。每位作者都将自己心目中对于“美丽的代码”的认识浓缩在一章当中,张力十足。38位大牛,每个人对代码之美都有自己独特的认识,现在一览无余的放在一起,对于热爱程序的每个人都不啻一场盛宴。 虽然《代码之美》的涉猎范围很广,但也只能代表一小部分在这个软件开发这个最令人兴奋领域所发生的事情。

更多计算机宝库...