关于开源项目在实践应用中的思考

在开篇之前,我想提三个问题,希望和大家探讨一下
1、为什么要应用架构,架构给我们带来的好处有哪些?
2、园子里的兄弟们在应用中,是直接用开源项目,还是经过合理剪裁后应用在项目中?
3、能说说有哪些开源项目能达到工业级标准,希望能给一下具体的指标(如并发能力)

先说说我的应用,一个基于.net 2.0开发的老项目,其中用到了开源的castle,我也在园子里看过无数人对其进行了追捧,所以我在做技术选型时,并没做验证。看了看它的思路和实现,觉得不错,可当我们做效率测试时,发现了很多问题,最严重的要数并发问题,这里我希望大家将就这个问题进行展开讨论,以给我一些回馈。

首先,描述一下场景:
1、我的应用布署在多台HP 380 机器上,前端是F5负载均衡
2、测试机为同等配置的HP 380.
3、千兆局域网。
4、表现层使用castle中的monorail.
5、要求秒并发不低于500,日访量百万。
测试结果:在并发量不大的情况下,顺利通过;当500并发时,在monorail的Velocity中报空引用错误。

 

结论

 

我们在做系统架构时应从以下几方面进行思考:
1、了解项目的背景,包括:使用群体、用户数量、业务情况、投入的资金、人力物力、项目的生命周期等。
2、根据1,做项目的策划和技术选型,公司现有技术力量或平台是否能够支撑项目,潜在风险有哪些。
3、选择一些开源项目时不要人云亦云,要进行验证。
4、如果技术实力强,最好企业能够吸取开源架构的思想后建立自己的架构体系,方便扩展,同时也方便错误的追踪和修改。
5、如果不具备4的能力,在进行大型项目(高并发、高可靠)应用时,建议使用原生态的微软技术,通过这次实践发现微软的原生态技术还是经得起考验的。
6、在一些小规模项目中,使用一些开源项目,还是利大于弊的。

最后,架构不是一成不变的,要根据项目的需求,应用的上下文,做技术方案的合理剪裁。

另:个人觉得.net 的开源项目的成熟度和java相比成熟度不够(并不是说.net不如java),尤其缺少大型项目应用案例,和工业级标准,希望.net开源项目多加油;
同时,在这里也希望大家谈谈自己在应用开源项目时的一些心得,如 Castle、NHibernate、Spring.NET、Quartz、log4net等在高并发时的表现。
 
补充:
欢迎大家拍砖,但我更希望是有实际意义的讨论,比如你认为那个开源项目具备高可靠性、高并发性,并在实际大规模应用检验过,可以给我一些具有实际意义的指
标(如吞吐量、秒并发响应时间、百分之九十交易时间等),我觉得这样讨论更客观。

posted @ 2010-08-31 10:41  design-life  阅读(3668)  评论(21编辑  收藏  举报