论坛首页 Java企业应用论坛

J2EE框架高性能应用讨论稿

浏览 15018 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-04-04  
目标:
现在我正在用java做一个高访问量的网站,特点是在考虑目前各种框架给编程带来好处的同时,也要考虑性能的问题。
概述:
我目前准备用的框架是webwork2、sping、hibernate来做。
还有可能会用到urlrewrite等方法。
数据库用oracle。

是否有哪位朋友做过这方面的测试,也给点建议。

我谈谈我的一点看法:

1、B/S结构在页面上的负担可能会比较重,展示层目前可以采用jsp、freemaker、vm等,jsp用的比较多,fm和vm没有做过性能测试,不知道性能如何,哪位知道执行原理的朋友提供一点线索。目前我考虑用jsp,在显示上,jsp里面的有很多的标签,这是我现在的一种取舍,从理论上讲,用到的东西越多,性能肯定都会下降,所以:我的结论是不采用taglib(不采用ww的标签)对象的取值采用直接取值。虽然标签给编程带来了很多方便。

2、web框架目前比较偏向ww,因为其方便灵活的控制(struts比起来差距还是比较大),哪里可以看到ww与struts开发出来的应用的性能比较的文章?

3、持久层采用hibernate,jdo由于复杂的原因没有采用,iBATIS烦琐的编程注定了不适合(特别是取值、分页等的时候),只是需要的时候作为一种补充

4、页面上会尽可能采用少的javascript,采用xhtml来代替html,同时会采用cache来固化一些不常更新的对象,同时会存在一些静态页面(因为静态页面快多了,页面生成采用vm,各位如果有更好的解决方案请给个提示)
,最终的显示会是动态内容和静态内容并存的情况。

5、数据库采用oracle10g,从编程的方便性、性能、集群方面综合考虑,目前应该还没有更好的厂商,这点大家应该认同吧。编程过程中各种数据库性能优化方案这里暂不讨论。

6、现在的框架应用了很多反射等方法,带来编程方便的同时对性能会有多大的影响有待测试数据来说明

这是我的一点看法,请朋友们提点意见。
   发表时间:2005-04-04  
你这个问题根本无从讨论! 高访问量?多高的访问量?并发多少请求?并发100个请求那也是高访问量,并发100000那也是高访问量,但是他们的优化方案就完全不同。脱离一个具体的前提空泛设计根本就是无用功。

Web应用中绝大多数情况下,数据库IO是瓶颈,所以考虑数据库软件和硬件优化,例如单独run一个DB Server,甚至考虑使用Oracle RAC,都是优化第一考虑。

应用程序服务器来说,提高性能的两大途径:Cache和cluster。Cache就不必说了,方案五花八门,例如在Web Server前端放一个squid做缓存,或者专门的缓存服务器(Sina就是这么干的),Web Server也可以做cluster等等。

最后的最后,才是考虑你应用程序的优化。从程序的外部软件硬件环境去考虑提高性能才是问题的真正解决之道,你说sina的新闻频道,不管你用jsp tag也罢,用jsp scriplet也罢,那都对整体性能无关紧要,这些东西根本就不是瓶颈。
1 请登录后投票
   发表时间:2005-04-04  
robbin 写道
从程序的外部软件硬件环境去考虑提高性能才是问题的真正解决之道,你说sina的新闻频道,不管你用jsp tag也罢,用jsp scriplet也罢,那都对整体性能无关紧要,这些东西根本就不是瓶颈。


同意, 所以当当网的CTO常常感叹没赶上好年头——在当年硬件价格低贱时没有多卖几台高性能的服务器。
0 请登录后投票
   发表时间:2005-04-04  
你们也不要这么打击人家

或许在他的公司里,他也只能考虑这些方面,外部软硬件环境根本就不是他所能决定的

只不过题目的确是定的大点了,J2EE框架,呵呵
0 请登录后投票
   发表时间:2005-04-04  
我觉得是不是把性能这个问题考虑得太复杂了呢?想想还只有ASP、PHP的时候,那么多门户网站都支撑着那么大的访问量。JSP不是一样能做到么?不行就加硬件撑呗。
0 请登录后投票
   发表时间:2005-04-04  
谢谢大家在关注,伙想大家还没有明白伙在意思

关于外部环境在影响可能不在讨论在范畴。

比如硬件、宽带、还有jdk的虚拟机(比如采用bea的jrockit等),包括各种数据库的优化方案。

to robbin:
很赞同你的观点,你说的很对。特别是这句话--- 那都对整体性能无关紧要,这些东西根本就不是瓶颈。


但我想讨论的是在这些东西确定后如何作优化。
0 请登录后投票
   发表时间:2005-04-04  
to dhj1

你的方法很对,现在很多网站都是这样作,所以我才有的事动态内容和静态内容并存的方式
0 请登录后投票
   发表时间:2005-04-04  
dhj1 写道
建议你用最复杂的技术, 最复杂的工具,生产最原始的产品, 纯HTML文件.


很显然在这种做法没法实现大多数的企业应用。

eckal 写道

我目前准备用的框架是webwork2、sping、hibernate来做。
还有可能会用到urlrewrite等方法。
数据库用oracle。

框架的主要目的不是为了提高系统的性能,而是提高设计的重用、加快开发进度、降低维护成本,提高系统和代码的可理解性。
你提到的表现层采用webworks、商业逻辑层由spring来管理、hibernate负责数据层,这种架构已经很好,在这个基础上的性能优化也很难提高多少了。
robbin说的意思就是你在那些方面下功夫提高性能,是有点本末倒置,力道没用到刀刃上。

如果你想提高系统的性能,建议你在jvm、数据库,应用服务器的配置、cache的管理以及架构(比如数据库的读写分开、避免使用分布式组件、合适的状态管理、应用集群等等)上下功夫。
1 请登录后投票
   发表时间:2005-04-04  
楼上说的对,我已经知道robbin的意思了

to yangzheng:
可以谈谈你的经验吗?
0 请登录后投票
   发表时间:2005-04-04  
dhj1 写道
最原始的做法是最好的, 手工做网页,纯HTML文件,保证你的高访问量情况下,性能最好!

如果静态的网页满足不了你的需要,用就纯JSP,什么框架也不要用.


纯JSP肯定砸锅,没有任何一个胆敢自称“高访问量”的CMS敢用纯JSP的,要么是内容页面静态化,要么是大量表现层缓存。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics