Java高可用性框架

6

我正在编写一个小型代理应用程序,它应该是冗余的,例如,主代理将在一个服务器上运行,而冗余代理将在另一个服务器上运行。是否有一个简单的高可用性框架可以用来实现这种冗余性?例如,这个HA框架将在实例之间发送ping,并在第一个实例崩溃时在另一个实例上引发某种异常或通知。

4个回答

2
建立这样的系统是我近年来的日常工作。我发现jgroups是一个非常有用的工具,可以接收和处理这种分组事件。如果您想建立自己的高可用基础架构,这就是情况。但我不知道,在您的情况下,可能只需要一个简单的反向代理,例如HAProxy就足够了。

0

您没有提供有关应用程序工作的详细信息,因此根据其状态性、是否可以容忍轻微数据丢失、是否时间紧迫、您是更注重开发人员时间还是机器时间,您可以拥有不同的解决方案。

上面有一些好的建议,我想补充一下:看看JMS和持久化消息。通常这些使恢复变得非常简单,但代价是延迟(除非您购买商业产品并学会使用或支付供应商来调整您的应用程序)。使用JMS队列,您可以实现主动-主动处理,并避免故障检测的麻烦。

另一个要考虑的方向是分布式状态管理/集群框架,例如Gigaspaces、Coherence、Gemstone、Infinispan、Gridgain和Teracotta。这些可以复制您的数据并保证各种服务质量级别。它们中的大多数都带有某种类型的故障检测和分布式管理机制。


0

如果您想要无需麻烦地实现高可用性,只需使用一些具有HA功能的负载均衡器,例如UltramonkeyLVSkeepalived等。

在HA配置中,通常需要使用虚拟IP,因此即使您将ping/notify功能作为框架使用,仍然需要进行一些操作(一旦另一个实例失败,开始响应对虚拟IP的请求)。因此,除非您正在寻找学习机会,否则我建议使用中间件而不是使用框架自己编写代码。

这些中间件可以配置多种健康检查。例如,简单的健康检查可能会定期向您的应用程序发送GET请求,并查找响应中的特定字符串(例如“XXX running.”),以确保您的应用程序正常运行。


-3

hadoop 是一个很好的起点。


真的吗?Hadoop是一个分布式计算框架。你为什么要使用map-reduce框架呢? - Enno Shioji

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接