6

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

4

4 回答 4

2

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

于 2010-09-16T22:06:44.690 回答
0

如果您希望 HA 没有麻烦,只需使用一些具有 HA 功能的负载均衡器,例如Ultramonkey、带keepalived的LVS等。

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

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

于 2010-09-15T14:38:32.103 回答
0

您没有提供有关您的应用程序所做工作的太多详细信息,因此取决于它的状态,它是否可以容忍轻微的数据丢失,是否对时间要求很高,您是否重视开发人员的时间而不是机器时间,您可以有不同的范围的解决方案。

上面有一些很好的建议,我想补充一下:看看 JMS 和持久消息传递。通常这些使恢复变得微不足道,但是以延迟为代价(除非您购买了商业产品并很好地学习了它,或者付钱给供应商来调整您的应用程序)。使用 JMS 队列,您可以实现主动-主动处理并省去故障检测的麻烦。

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

于 2010-09-16T15:19:03.763 回答
-2

hadoop是一个很好的起点

于 2010-09-15T14:16:12.877 回答