2011-06-17 45 views
2

令我惊讶的是,我发现AppEngine应用程序服务器请求串行。最近,Java应用程序有可能同时服务器请求,默认情况下禁用(reference)。为什么在AppEngine/Java中默认禁用并发请求?

默认情况下禁用并发请求的原因是什么? Web应用程序本质上意味着同时处理多个请求,无论它们是用Java,Python还是PHP编写的。在我看来,这是一种人为的限制。

+0

看起来我需要改变我的配置。我不知道这一点。 – Kaj 2011-06-17 11:59:52

回答

1

我认为这是默认情况下更好的选项,因为许多新手程序员正在编写appengine并期望使用比scale/volume更小的方法。

并发PHP或python(基于进程)不会混淆对象数据,但Java可以(基于线程)。这是主要的区别。

+0

感谢您的回复。作为一名Java Web程序员,我应该对线程安全和不安全的知识有所了解。像Tomcat或Jetty这样的Servlet容器不会阻止它,我仍然不明白为什么appengine会这样做。 – 2011-06-17 11:55:42

6

这可能与开始时不支持并发请求的AppEngine有关。该功能仅在版本1.4.3(2011年3月30日)中添加了Java。因此,一些开发人员可能已编码并测试其应用程序,以便一次只针对单个线程正常运行。

一旦Google构建基础架构和代码以支持并发请求,他们可能会默认启用并发性,因为它可能会破坏现有应用程序。因此,选择加入方式的原因。

有一些GAE民众检查StackOverflow,所以我们可能需要听到他们的确认。

+1

这是完全正确的。 – 2011-06-20 02:02:55

1

可能避免回归对已经部署的应用程序,而不是线程安全的...

0

在GAE文档中,“注意:如果你想使用的并发请求,您的应用程序代码需要你之前使用正确的线程同步启用“。对并发请求的危险性非常明确。
正如上面其他人所说的那样,这样做并不危险,因为默认情况下不允许此功能,并将其提供给深入研究文档的高级开发人员。
然而,它是写得很小,在文档的末尾,所以它不容易看到它:)

+0

嗯,我看到了。但鉴于GAE中的线程受到严格限制,而且IMO没有理由在这方面使GAE变得更加复杂,因为这是一个“普通的”J2EE应用程序,但我仍然没有看到重点是什么在默认情况下禁用它。 – 2011-06-17 12:42:46

相关问题