选择Java Spring作为大型网站的可扩展服务器端框架

我目前面临着关于使用适当的服务器端框架的困境。

基本上,我想选择最好的框架来构建一个大型网站来服务数百万页面点击。 网站本身将是大量数据库和ajax依赖,因此需要从一开始就计划可扩展性。

我对合适的服务器端框架的需求如下:

  • 基于OO的高级语言支持和一些元编程支持。
  • 在框架级别上进行适当的可伸缩性和负载平衡。
  • MVC架构。
  • ORM支持或至少对象级映射支持。
  • 正确的路由(URL重写)支持。

我的问题最终是Java Spring框架是否适合根据上面提到的需求和需求运营大型网站? 我应该坚持像Django或Rails这样的东西吗?

Spring是一个很好的框架。 但是,它本身并不能解决您的可伸缩性问题(并且没有其他框架可以解决)。

要在服务器上扩展负载,您需要确保服务器是无状态的,或者使用具有粘性会话的负载平衡器。 要减少数据库的负载,您需要缓存。 没有框架可以为您解决。

换句话说,考虑整体系统设计而不是特定的编码框架。

我更喜欢以下内容。

  1. Spring框架(MVC架构和DI原理)。
  2. Hibernate框架。
  3. 使用memcache / Infinispan缓存mechanisam以减少服务器上的负载。
  4. 使用多个服务器/ db实例的水平负载平衡。

另一个不错的选择 – 以及基于标准的选择 – 将只是Java EE。 EE 6是一个不错的选择,支持EE 6的JBoss AS 7取得了很大进展,体积小,效率高,而且闪电般快。 并且是免费和开源的。

Java EE 6作为标准,几乎可以满足您的所有需求:CDI作为编程模型,基于JSF的Web前端,用于RESTful Web服务的JAX-RS,用于对象关系映射的JPA2,以及如果您这样做需要它,JMS消息传递等等。如果您想了解这项技术,可能需要Sun / Oracle的Java EE 6教程 。

如果您选择使用JBoss作为运行时环境,那么您也可以使用一套出色的工具 – 一组Eclipse插件,可以轻松构建Java EE应用程序。

几乎任何框架,如果使用得当,都可以。 Spring / Spring MVC是个不错的选择:

  • 它支持自定义URL映射
  • ORM支持
  • 缓存支持 – 这对您的可伸缩性非常重要

我会去spring。

  • 简单
  • 支持您需要的所有function +更多function
  • 良好的社区支持

Web服务器: -Static由Web服务器托管的内容: http : //nginx.org/en/ 。 – 许多资产可以托管在内容交付网络中。 – 启用gzip压缩@Web服务器和应用程序服务器。 – GUI应该是胖客户端,只能在初始化后从服务器获取数据。 – 减少到服务器的次数。 – 压缩内容(HTML,CSS,JS,嵌入图像在html本身等)

应用程序服务器: – 确保您使用池化技术来处理所有涉及的资源,如数据库,消息处理器等。 – 针对垃圾收集进行了优化的良好编码实践。 – 使用NBIO应用服务器(JBoss Wildfly,Netty,Tomcat 8等)

数据库: –复制数据库。 – 使数据库正常化并在代码中维护软完整性,而不是在DB中。 参照完整性和约束检查在查询(加入,插入,更新等)方面成本很高 – 您可以看看@迁移到像Orient DB这样的ACID NoSQL数据库。