2011-03-06 56 views
2

假设您要构建具有高可伸缩性的Web应用程序(超过10,000个simultanious用户)。你如何保证良好和稳定的表现?哪些设计模式值得推荐?什么是最常见的错误?java web应用程序中的可伸缩性和性能

是否有强制自己编写可伸缩代码的框架?你可能会考虑PHP作为前端和Java作为后端技术?或者,我们可以说JSF是合理的,并且这都与您的架构有关?在这种情况下用Grails开发有多好?

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

+0

你确实想要谷歌*“C10K”*和Java。迷人的读物。当然现在几种语言/操作系统可以处理C100K上不那么结实的硬件(比你所求的10倍以上的连接);) – SyntaxT3rr0r 2011-03-06 21:20:47

+0

你的意思是10000个并发用户,如:1)10,000 HTTP每秒点击或2)10,000登录用户一次。 #1,请参阅C10K;对于#2,对于任何常用的框架来说,这可能不是一个问题,假设您不想在不到几分钟的时间内记录所有这些用户。 – AngerClown 2011-03-07 01:50:19

+0

我在想第二点:-) – Sven 2011-03-07 07:34:11

回答

2

如果你想构建一个高度可伸缩的应用程序,那么它应该是无状态的,并尽可能地使用无共享体系结构。如果你在节点和节点之间没有共享任何状态,那么同步是最小的。有几种适合您需求的优秀网页框架(Play Framework for Java,Django for Python,Ruby on Rails for Ruby)。

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

0

有这么多用户同时使用(这种情况我承认,我从来没有遇到过我自己),我认为是的最重要的是能够跨多个Web服务器负载平衡您的收费。

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

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

1

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

相关问题