2010-06-15 50 views
1

实现Java Web应用程序高可用性的工具有哪些?为java web应用程序实现高可用性

+1

我想一些关于您的系统域的更多信息以及关于高可用性在这种情况下意味着什么的更好定义将会有所帮助。你需要五个正常运行时间吗?或者你只是在工作时间内寻找99%的正常运行时间?这是什么样的应用程序?你说web应用程序,所以我假设你有用户通过浏览器进行交互,但是使用特性是什么?你有几十个用户还是几十万用户?应用程序是否大量使用会话状态?没有更多的信息,你的问题很难回答。 – 2010-06-15 15:30:58

回答

2

使用的主要方法不是一种工具。它被称为“高质量软件” - 即您必须正确处理所有资源(包括同步)。

Apache Hadoop是您可以用来分配和缩放您的系统的东西。但那是巨大的应用程序。

Load balancing也是要看的东西。

+1

同意。最好的HA是通过设计完成的。 – Nate 2010-06-15 14:24:21

1

也许您正在寻找集群解决方案? 有Terracotta的JVM集群的OpenSource版本

+0

赤土陶器确实是一件好事(+1) – Bozho 2010-06-15 14:29:55

+0

集群可以用大多数开源服务器完成:例如JBoss提供集群,Tomcat也是如此。 http://docs.jboss.org/jbossas/jboss4guide/r4/html/cluster.chapt.html 这只是解决方案的一部分:在应用程序中具有高可用性需要每个层中的HA来消除单点故障 – 2010-07-05 18:53:42

1

通过应用程序的所有层的冗余来消除单点故障。你可以问自己“如果X失败会发生什么”的问题,然后找到缓解这种风险的方法。

0

要开始,你需要:

  1. 可在多个网络服务器上同时运行的Web应用程序。
  2. 负载均衡前端,可以检测到失败的Web服务器并将流量路由到其他活动实例。这部分不需要用Java。您需要找到负载平衡器和Web应用程序容器之间的集成点。

完成初始设置之后,您需要找到其他可能的故障点,如数据库服务器,负载平衡服务器本身,DNS服务器等,然后尝试添加冗余和故障切换这些层也是。

你也应该考虑硬件解决方案,如RAID,SAN等

1

至少有两个主要方面,你将不得不应对:

  1. 操作
  2. 架构,设计,代码

这些元素都是很大的问题。例如,有几个专门用于这些站点的好站点(分别参见serverfault.com和stackoverflow.com)。

操作注意事项包括:扩展部署,包括负载平衡,灾难恢复,CDN(如果可能)和监控。持续的部署考虑也很重要。

架构 - >代码考虑因素众多而且重要。从解决方案的体系结构到可维护性的代码布局,以及最难实现的:正确性。我最好的建议是:聘请有经验的人。如果失败,请从有经验的人那里阅读书籍等。另外,在Java世界中,对这个重要事实进行讨论非常重要:它很可能是之前写的。这是个好消息!许多非常非常聪明的人花费了无数个小时为你编写代码,并且已经在[雅加达] Apache,谷歌代码,Codehaus,Sourceforge和众多其他开源网站等地方免费提供。你对你的问题做的研究越多,你会发现这些球员出现的越多。一个重要的技能是确定哪些可用的软件适合您。

人们用特定的技术选择了其他答案,其中很多都是很好的建议,但是这一切都归结为你正在试图解决的实际问题,只有你知道那是什么(嗯,问题没有无论如何,我们都不会告诉我们:D)。