走在架构师的大道上 Jack.Wang's home

Java, C++, linux c, C#.net 技术,软件架构,领域建模,IT 项目管理 Dict.CN 在线词典, 英语学习, 在线翻译

BlogJava 首页 新随笔 联系 聚合 管理
  195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

       对于J2EE,我们知道当开发应用时,在架构设计阶段的决定将对应用的性能和可扩展性产生深远的影响。现在当开发一个应用项目时,我们越来越多地注意到了性能和可扩展性的问题。应用性能的问题比应用功能的不丰富问题往往更为严重,前者会影响到所有用户,而后者只会影响到碰巧使用该功能的那些用户。

      作为应用系统的负责人,一直被要求"要少花钱多办事"----用更少的硬件,更少的网络带宽,以及更短的时间完成更多的任务。J2EE通过提供组件方式和通用的中间件服务是目前首选的最优方式。而要能够构建一个具有高性能和可扩展性的J2EE应用,需要遵循一些基本的架构策略。

1. 缓存(Caching)

简单地说,缓存中存放着频繁访问的数据,在应用的整个生命周期中,这些数据存放在持久性存储器或存放在内存中。在实际环境中,典型的现象是在分布式系统中每个JVM中有一个缓存的实例或者在多个JVM中有一个缓存的实例。

缓存数据是通过避免访问持久性存储器来提高性能的,否则会导致过多的磁盘访问和过于频繁网络数据传输。

2.复制

复制是通过在多台物理机器上创建指定应用服务的多个拷贝来获得整体更大吞吐效率。理论上看,如果一个服务被复制成两个服务,那么系统将可处理两倍的请求。复制是通过单一服务的多个实例的方式从而减少每个服务的负载来提高性能的。

3.并行处理

并行处理将一个任务分解为更为简单的子任务,并能够同时在不同的线程中执行。

并行处理是通过利用J2EE层执行模式的多线程和多CPU特点来提高性能。与使用一个线程或CPU处理任务相比,以并行方式处理多个子任务可以使操作系统在多个线程或处理器中进行分配这些子任务。

4.异步处理

应用功能通常被设计为同步或串行方式。异步处理只处理那些非常重要的任务部分,然后将控制立即返回给调用者,其他任务部分将在稍后执行。

异步处理是通过缩短那些在将控制返回给用户之前必须处理的时间来提高性能的。虽然都做同样多的事情,但是用户不必等到整个过程完成就可以继续发出请求了。

5.资源池

资源池技术使用的是一套准备好的资源。与在请求和资源之间维持1:1的关系的不同,这些资源可被所有请求所共享。资源池的使用是有条件的,需要衡量下面两种方式的代价:

A、维持一套可被所有请求共享资源的代价

B、为每个请求都重新创建一个资源的代价

当前者小于后者时,使用资源池才是有效率的。





本博客为学习交流用,凡未注明引用的均为本人作品,转载请注明出处,如有版权问题请及时通知。由于博客时间仓促,错误之处敬请谅解,有任何意见可给我留言,愿共同学习进步。
posted on 2008-04-23 22:18 Jack.Wang 阅读(3045) 评论(12)  编辑  收藏 所属分类: 架构师篇

Feedback

# re: 构建高性能J2EE应用的五种核心策略 2008-04-24 09:28 张氏兄弟
感觉就是我大学课本上的前言,看似有道理,实则无用!  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-24 09:32 YODA
说的不错,但是无论是JEE的应用还是其它的应用,你所说的这5点,都基本适用。但是具体情况下还是要有所取舍,每种类型的应用都有自己的优点和局限,比如B/S的应用,说实话,很难做出来异步处理的效果。  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-24 09:42 YZ
感觉就是我大学课本上的前言,看似有道理,实则无用!  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-24 16:22 单飞
就是,难怪我看不懂啊。  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-25 08:06 Jack.Wang
@单飞
从你的留言中可以看出你只能是个 coder, 而且还是个人云亦云的 coder.
只是学会了 copy.   回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-25 10:19 byb
你的QQ群,拒绝加入  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-25 22:16 zhengxi
挺好的。  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-26 13:07 LMJ
感觉你说的[异步处理 ]和[并行处理 ]没有什么区别~~
实践证明,[缓存(Caching) ]确实能够大大提升应用性能~  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-26 16:55 Jack.Wang
并行和异步当然不是一个概念。
  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-26 17:24 Maggie
@byb
已修改,可以申请加入了  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-04-27 20:58 天天架构师
总结的不错,不过内容有些耦合,
首先是缓存,这个是最有效的解决方案,而复制、并行处理,则是对集群环境的一种体现,当然,让缓存完全支持集群真的不是太容易,而且从某方面说,集群环境中,缓存处理不当,还不如不缓存,最终导致还不如不集群,呵呵。企业应用性能优化已经是当今评价架构师最好的题材了,真的,很少有人能完全给出解决方案,并有相关实际经验。
总体总结的很好,顶你一下,祝你成功。  回复  更多评论
  

# re: 构建高性能J2EE应用的五种核心策略 2008-05-01 16:59 lsqlister
总结的不错,不过不是自己的体会。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: