构建一个高规模的Java应用程序,你会使用什么栈?

如果您需要使用java构建高度可伸缩的Web应用程序,您会使用什么框架,为什么?

我只是在阅读java中的思想,首先是servlet和manning的spring框架,但我真的想关注高度可伸缩的架构等。

你会使用tomcat,hibernate,ehcache吗?

(假设你必须为规模设计,而不是在获得流量类型响应时寻找“担心”)


答案取决于我们“可扩展”的含义。 很大程度上取决于您的应用程序,而不是您选择实施的框架。

无论您选择哪种框架,事实是,您部署的硬件对于能够处理的同时发生的请求数量都有上限。 如果你想处理更多的流量,你必须投入更多的硬件,包括负载平衡等。

在这种情况下相关的部分与共享状态有关。 如果您有很多共享状态,则必须确保它是线程安全的,需要时需要“粘贴”,在整个群集中进行复制等等。所有与您将它部署到的应用程序服务器相关的内容以及您设计应用程序的方式,而不是框架。

Tomcat不是一个“框架”,它是一个servlet / JSP引擎。 它具有集群功能,但其他大多数Java EE应用程序服务器也是如此。 如果你已经选择了Spring,你可以使用Tomcat,因为它暗示你没有EJB。 Jetty,Resin,WebLogic,JBOSS,Glassfish - 它们都可以。

如果你已经很了解春天,那么春天是个不错的选择。 我认为,遵循Spring的习惯用法会使您的应用程序更具可分层性和体系结构上的可靠性,但这并不是决定可伸缩性的因素。

Hibernate将使你的开发生活变得更容易,但是你的数据库的可伸缩性很大程度上取决于模式,索引等.Hibernate不是保证。

“可扩展”是其中一种容易抛弃但包含许多考虑因素的全部术语(如“轻量级”)。 我不确定一个简单的框架选择能否一劳永逸地解决这个问题。


我会检查Apache Mina。 从主页:

Apache MINA是一个网络应用程序框架,可帮助用户轻松开发高性能和高可扩展性的网络应用程序。 它通过Java NIO提供了各种传输(如TCP / IP和UDP / IP)上的抽象·事件驱动的异步API。

它有一个建立在它之上的HTTP引擎AsyncWeb。

一个不那么激进的建议(!)是Jetty--一个面向性能和占用空间小的servlet容器。


我主要关注的两个关键字是异步无状态 。 或者至少“尽可能无状态:当然,你需要状态,但也许,而不是去一个完整的RDBMS,看看以文档为中心的数据存储。

看看关于async和CouchDB或MongoDB作为数据存储的AKKA ...

链接地址: http://www.djcxy.com/p/7661.html

上一篇: building a high scale java app, what stack would you use?

下一篇: How to Delete using INNER JOIN with SQL Server?