系统性能优化小结之业务层(2)

系统性能优化总结之业务层(2)

业务层的性能优化,可能普通程序员更关注些,我总结了下面几点,仅当抛砖引玉吧。

  • 代码级别:变量的声明范围,for循环或while,++及移位操作等,这方面相当考究一个程序员的基础功力(尹哥在这块很牛的),我认 为对于企业级应用开发,这块应该不是重点,因为现在的服务器性能都非常好,代码写得烂一点,性能影响也不大。当然,项目不同,则要另当另论哦,比如嵌入 式、j2me等的开发要求就比较高,游戏服务器端的代码要求也很严格,甚至list类型集合都不让用,全部用array。
  • 针对特点框架的性能优化:在业务实现代码上,可考虑有针对性的优化。比如用hibernate做持久层实现吧,就得认识到load,get,iterator等方法的性能问题,批量sql操作及批量对象操作的性能影响,一级及二级缓存的应用等等。
  • 失血领域对象在各层中传递,减少不必要的dto或vo对象。失血模型的广泛应用,可能也和这个有关,简单、高效。
  • 合理的业务逻辑实现设计。这点是对设计人员提出的,合理的实现设计,可大幅提高业务执行性能。
  • 数 据库连接池的使用。这点也许可以放到持久层去说合理些,但我觉得和业务的关系更紧密。数据库连接池可以使用容器低层的实现,这也是一种不错的选择,但我们 一般为了项目能够快速简单地布署,都在项目中直接实现。比如:直接将dbcp或proxool配置为spring的数据源(dbcp与proxool的选 择我将在另一文章中进行比较)。
  • 缓存的应用。缓存其实是架构级的提升性能之道,主要是对领域对象的缓存,因为一般的性能瓶颈都在数据 库,对域对象的缓存,可以减少和数据库的交互以提高性能。比如用hibernate做持久层实现,就存在一级缓存及二级缓存,一级的我们一般不管,基本是 透明的,二级存存就需要我们根据实际情况设定合理的缓存参数,而且要合理使用好查询缓存。常用的二级缓存有 c3p0,oscached,memcached等,个人偏向memcached。
  • 项目发布后,要对日志文件的级别,及sql的输入选择进行重新配置,以符合生产环境(本人曾有深刻教训的)。
  • 使用服务器集群(软件或硬件方式,我会在另一篇文章中详细说明),对服务器的性能进行水平扩展。

最近一起非常关注周鸿伟与tx之间的战争,全力支持360。

本文首发http://www.fudu365.com【英语听力复读网】,转载请保留。