Java Web应用程序中的可伸缩性和性能

时间:2011-03-06 18:37:06

标签: java performance scalability

假设您要构建具有高可扩展性的Web应用程序(超过10,000个同步用户)。您如何保证良好稳定的表现?推荐哪些设计模式?什么是最常见的错误?

是否存在强制自己编写可伸缩代码的框架?您是否可以将php视为前端,将Java视为后端技术?或者让我们说JSF也是合理的,这完全取决于你的架构?在这种背景下,Grails的发展有多好?

希望这个主题不是太主观但我喜欢收集你的一些经验: - )

3 个答案:

答案 0 :(得分:2)

如果要构建高度可伸缩的应用程序,那么它应该是无状态的,并尽可能使用无共享架构。如果节点之间没有任何共享,并且节点没有状态,则同步最小。有几个很好的Web框架适合您的需求(Play Framework和Lift for Java,Django for Python,Ruby on Rails for Ruby)。

至于JSF和相关技术,我认为在你的情况下使用它们是明智的。一个好的旧请求 - 响应更好。

答案 1 :(得分:1)

如果您希望应用程序可以很好地扩展并且性能良好,那么您需要具有分布式缓存。分布式缓存可以极大地提高应用程序性能,为此您可以使用任何第三方分布式缓存,如NCache。

答案 2 :(得分:0)

有这么多的并发用户(我承认我从未遇到过自己的情况),我认为最重要的是能够在许多网络服务器上对您的费用进行负载均衡。

如果你想要故障转移(这可能是必须的),这意味着你必须非常小心状态:你拥有的状态越多,你需要的内存越多,处理之间的故障转移就越困难。服务器:要么将会话状态保留在所有服务器通用的位置,要么需要跨服务器复制状态。

因此,我会选择一种在服务器上不需要太多状态的架构。恕我直言,基于动作的框架比基于组件的框架更适合这种体系结构,除非在客户端使用丰富的JavaScript组件处理状态。