我熟悉LAMP堆栈,多年来已成功部署了一些基于它的Web sties.我已经使用了从Apache + modPerl到PHP,Ruby和Rails的所有东西.通过充分利用缓存,我的Rails站点可以承受相当不错的负载,但我并不是说大量的.
我从来没有真正喜欢Java作为一种语言或XML,并且非常忽略了整个Java EE方面.对于那些在这两个领域都拥有真实和直接经验的人来说:Java EE是否有一些我非常喜欢的东西,或者只是一堆热风?什么证明专有应用程序服务器的高价格是合理的?
我不是在这里曳:我正在寻找的东西,Java EE的真指甲是从缺少具体的例子现代 LAMP架构,如果存在这种差异.(Modern = Rails,Django等).或者用LAMP真正做得更好的东西(更少的XML坐起来).
+++++更新于2008年10月16日
我很遗憾地报告说,这里的大多数回复都没有用,只是分为两类:"它可以扩展,因为这里有大型网站的三个例子"和"它可以扩展,因为它确实比实际上要好得多LAMP堆栈".
我已经做了很多阅读,并得出结论,Java EE只有一个非常好的技巧:交易(感谢Will),至于其余的你可以成功或失败的自己的优点,环境中没有任何内在的东西为了让你创建一个可扩展且可靠的网站,事实上Java EE有很多陷阱可以很容易地失败(例如,很容易开始使用会话bean而没有意识到你现在正在为相当多的JMS付费通过不同的设计可能已经避免的流量.)
有用的讨论
http://www.subbu.org/blog/2007/10/large-scale-web-site-development
http://highscalability.com/
http://www.oreillynet.com/onlamp/blog/2004/07/php_scales.html
http://www.schlossnagle.org/~george/blog/index.php?/archives/29-Why-PHP-Scales-A-Cranky,-Snarky-Answer.html
http://blogs.law.harvard.edu/philg/2003/09/20/
Will Hartung.. 18
Java EE在LAMP堆栈上提供的关键区别可以归结为一个单词.交易.
大多数较小的系统仅依赖于数据库提供的交易系统,并且对于许多(显然)非常令人满意的应用程序.
但每个Java EE服务器都包含一个分布式事务管理器.这使您可以安全可靠地在不同系统中执行更复杂的操作.
最简单的例子是从数据库中获取记录,将其放在消息传递队列(JMS)上,然后从数据库中删除该行的简单方案.这个简单的案例涉及两个独立的系统,并且不能在交易的一边做得可靠.例如,您可以将行放在消息队列中,但是(由于系统故障)不会从数据库中删除该行.您可以看到如何与JMS提供程序进行事务以及与数据库进行单独的事务并不能真正解决问题,因为事务未链接在一起.
显然,这个简单的场景可以解决,处理等等.但是,Java EE的优点在于,您不必处理这些问题 - 容器可以处理它们.
而且,并非所有问题都需要此级别的事务处理.但对于那些做的人来说,这是非常宝贵的.一旦您习惯使用它们,您就会发现Java EE服务器的事务管理是一项很好的资产.
Java EE在LAMP堆栈上提供的关键区别可以归结为一个单词.交易.
大多数较小的系统仅依赖于数据库提供的交易系统,并且对于许多(显然)非常令人满意的应用程序.
但每个Java EE服务器都包含一个分布式事务管理器.这使您可以安全可靠地在不同系统中执行更复杂的操作.
最简单的例子是从数据库中获取记录,将其放在消息传递队列(JMS)上,然后从数据库中删除该行的简单方案.这个简单的案例涉及两个独立的系统,并且不能在交易的一边做得可靠.例如,您可以将行放在消息队列中,但是(由于系统故障)不会从数据库中删除该行.您可以看到如何与JMS提供程序进行事务以及与数据库进行单独的事务并不能真正解决问题,因为事务未链接在一起.
显然,这个简单的场景可以解决,处理等等.但是,Java EE的优点在于,您不必处理这些问题 - 容器可以处理它们.
而且,并非所有问题都需要此级别的事务处理.但对于那些做的人来说,这是非常宝贵的.一旦您习惯使用它们,您就会发现Java EE服务器的事务管理是一项很好的资产.
大型Java EE Web服务器(Jboss,WebSphere,WebLogic等)和Windows Server/IIS/ASP.NET在可扩展性和性能方面与典型的灯堆完全不同.
我的团队负责美国最大的电信商务网站之一,每天处理数百万次点击(我们的一个数据库大小超过1000TB,为您提供一些视角).
我们将ASP.NET和WebSphere以及SAP ISA(也是Java EE解决方案)的组合用于我们站点的不同部分,LAMP堆栈绝对没有办法处理这种负载而无需扩展到大量硬件...... .NET堆栈部分处理大部分负载并仅在32台服务器上运行.
我们也不做任何花哨的事情,例如使用memcached类型的解决方案,或静态HTTP缓存...我们在各个应用服务器上缓存SOAP调用和数据库调用,但不使用内存数据库等...到目前为止我们的平台可以处理它.
所以,是的,它的苹果与橘子将这种东西与LAMP进行比较.