【请教】对于一个简单的系统如何提高性能和效率?

目前我正在设计一个简单的系统,整个系统的功能
非常简单。大概功能模块有如下几个:

1.登录模块:包括用户的密码管理(修改和mail发送功能)
2.下载excel模板:只是把一个excel文件下载到客户本地
3.上传excel模板:下载模板以后进行填写,然后上传,这时候需要把
excel中的每一行进行解析然后进行数据库操作(操作比较复杂)

4.查询上传的记录:根据时间查询上传成功和失败的记录数。

但是由于访问量巨大,可能同时在线的人数保守估计为8000,并发量至少在
500以上。而且访问时间非常集中。

对于这样一个简单的系统,如何提升其性能,效率?
欢迎任何从架构到调整,从软件到硬件,从数据库连接到cache。。。。
感谢任何形式的参与;

也可以直接使用mail和我联系:
mail:layout@263.net
qq: 46679799

【注】:1.目前考虑使用Poi来进行后台的excel文件解析。
2.用户可能使用modern连线上网,所有的反应时间必须在2s中内完成

系统架构准备使用
struts1.1+hibernate2.1进行开发
excel解析使用apache的poi解析
其中excel的配置文件使用xml模板,模板的解析使用jdom做
由于时间问题,可能充分测试验证架构的时间比较少,
希望各位能够给我一个建议。
即使把上面的几种技术全部推翻也没有关系。
我的目的在于找到一个能够承受最大压力,能够提供最好性能的架构
(包括软硬件)

使用异步机制JMS完成最合适,不会丢包,国外证券交易不少采取异步机制如JMS等,这样能够保证并发巨大访问时,所有的用户资料信息系统都能接受。而且,JMS可以方便集群。

不推荐使用通常同步机制进行“硬拼”。

目前由于数据的同步性并不是很强
我采取的策略是白天用于文件的上传
然后晚上用自动机来进行解析文件以及数据库的操作
这样子可以把压力平均分配一下
但是对于500人同时上传文件而言,我还是对系统的
性能有些担忧。

Howdy,
haven't been here for a while, glad to see so many new faces these days.
Without knowning your budget, my personal suggestion is:
1. A good storage technology, normally neither OS file system nor
RDBMS is not efficient to handle large amount of data write.

2. Enough CPU power to process and transform the data.
3. If you have high query load on tables with millions of records, of course, clustable DB is a must.


I don't think jms can really help as a) your process flow is very simple b) few jms products are really scalable, to avoid lost data, they still have to store it on disk temporarily. c) messaging system like Tibco, MQ are great, but very expensive.

Don't want to sound salesy, few friends of mine built a high volume email system that they claimed can handle 5-6 times of email load as what yahoo have today with a cluster of cheap hardwares. the core technology is input mail( can be huge) disk caching (designed by a key architect from oracle). I think their technology solve the similar problem as yours. BTW, they are doing business in China now.

Cheers,

-Jevang

很长时间没看到Jevang发言,你好啊。

不过,我的建议还是不能苟同Jevang的,我认为你这个项目使用JMS是很合适的,JMS非常简单,真的比EJB或其它什么容易,基本都可以配置,在你的那些Javabeans基础上配置一下就可以。

企业邮件系统一般都使用JMS完成,因为通常那种同步性质的邮件系统,可能导致丢信,信件不能到达等问题,但是使用JMS,则可以不断的反复地试验,同时可以保证发送方和接受方的事务同步,这对于企业以及政府办公等系统很重要。

使用了JMS,你的系统并发再多也没有关系,因为当时系统只负责接受,不处理数据,等系统空闲时再处理数据,就象你现在白天上传晚上处理一样,使用JMS就是沿着这个模式做下去,可以做得更好。


Hi Banq,
nice to talk to you, I was too busy with my own stuffs. To stay in shape, I have to give more time to sports than surf the web ...

I used JMS heavily and in general it's very good solution for process oriented system. but to handle 500 files(not simple messages less than 4k each) per 2 seconds at peak time, JBoss, WebsphereJMS( not true MQ) or weblogic(I work for BEA and I know their storage implementation) JMS can't stand that load or not efficient in term of hardware usage.

What I am saying is there are better/cheaper/less overhead solution in this case.

JMS虽好,也不能逢人就推荐呀
人家担心的的500个人同时上文件并发高,服务器挺不住
你到是说说看,用JMS怎么解决他的问题?难道改B/S为C/S,下载一个客户端软件?
已经上传的excel文件的处理可以考虑采用JMS的方式异步来作,但弊端也是显然的,就是如果用户上传的文件里如果有错误,你不能立刻通知用户重新传递,
而且,相对与文件上传的压力,来说,解析、入库并不十分费资源,不作异步也应该没有问题。
说了半天,一句用有的也没有,呵呵,说点可能有用的吧
如果你担心WEB的负载,做一个cluster就行了,不需要fail over,只要load banlance就行

确实!
问题的关键不在于用不用JMS,异步问题楼主的方法就很好。关键在于解决同时上传500各文件的问题,做集群吧。集群集群集群集群集群集群