Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java web应用程序中的可伸缩性和性能_Java_Performance_Scalability - Fatal编程技术网

java web应用程序中的可伸缩性和性能

java web应用程序中的可伸缩性和性能,java,performance,scalability,Java,Performance,Scalability,假设您想要构建一个具有高可伸缩性的web应用程序(超过10000个并发用户)。您如何保证良好且稳定的性能?哪些设计模式值得推荐?最常见的错误是什么 是否存在强迫自己编写可伸缩代码的框架?你会把PHP作为前端,而java作为后端技术吗?或者说JSF也是合理的,它完全是关于您的架构的吗?在这种情况下,使用Grails开发有多好 希望这篇文章不要太主观,但我喜欢收集您的一些经验:-)有这么多同时使用的用户(我承认我自己从未遇到过这种情况),我认为最重要的是能够在多个web服务器之间平衡您的费用 如果要

假设您想要构建一个具有高可伸缩性的web应用程序(超过10000个并发用户)。您如何保证良好且稳定的性能?哪些设计模式值得推荐?最常见的错误是什么

是否存在强迫自己编写可伸缩代码的框架?你会把PHP作为前端,而java作为后端技术吗?或者说JSF也是合理的,它完全是关于您的架构的吗?在这种情况下,使用Grails开发有多好


希望这篇文章不要太主观,但我喜欢收集您的一些经验:-)

有这么多同时使用的用户(我承认我自己从未遇到过这种情况),我认为最重要的是能够在多个web服务器之间平衡您的费用

如果要进行故障切换(这可能是必须具备的),这意味着您必须非常小心状态:状态越多,所需内存越多,处理服务器之间的故障切换就越困难:或者需要将会话状态保留在所有服务器共有的位置,或者,您需要跨服务器复制状态


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

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

如果您想构建一个高度可扩展的应用程序,那么它应该是无状态的,并尽可能使用无共享体系结构。如果节点之间不共享任何内容,并且节点没有状态,则同步是最小值。有几种很好的web框架适合您的需求(Play Framework和Lift for Java、Django for Python、Ruby on Rails for Ruby)


至于JSF和相关技术,我认为在您的案例中使用它们是不明智的。一个好的老请求再回应一次更好

你确实想用谷歌搜索“C10K”和Java。引人入胜的读物。当然,现在有几种语言/操作系统可以在不太坚固的硬件上处理C100K(比您要求的连接多10倍)你指的是10000个同时登录的用户,如:1)每秒超过10000次HTTP点击,还是2)一次登录10000个用户。#1见C10K;对于#2,对于任何常用的框架来说,这可能都不是问题,假设您不想在几分钟内登录所有这些用户。我在考虑第二点:-)您想实现一个线程池或连接池系统,通过这种方式,您可以配置每秒线程/连接的最大数量(基于CPU和内存容量)。这是为了保持延迟,并确保当有高负载的请求传入时服务器不会崩溃。