2014-03-14 30 views
1

我正在研究一个系统,该系统具有可以操纵它的RESTful Web服务(该服务允许所有CURD操作)以及显示系统数据的Web客户端(大部分客户端使用jQuery编写)。在标准操作场景中,有一个主服务器和至少一个我系统的备份服务器,因此至少有两个RESTful Web服务。如何在客户端实现REST服务器容错?

所以我的问题是,如果我的主服务器崩溃,我怎么能让一个客户端正在看主服务器,现在正在查看备份服务器没有任何用户操作?

+0

您可以在客户端上实现一些循环机制。但最终可能会更好地解决服务器端的问题(高可用性,负载平衡等) – TGlatzer

+0

但是当服务器端的解决方案完全崩溃并且将请求路由到备份和查看器客户端可以是任何计算机(有或没有我的系统)。 – user2579277

回答

1

你最好的选择是让客户端做绝对没有什么来处理服务器故障。这不是客户的责任,也不应该是。像代理服务器和负载平衡器这样的服务器端技术最适合处理服务器故障。

最常见的方法是摆脱“一个主服务器”的思维方式,而是创建一个服务器集群,每个服务器都可以处理您的任何REST请求。如果您的REST请求是无状态(应该是),并且可以路由到群集中的任意服务器,那么可以通过在群集前使用负载均衡器来处理服务器的故障。

如果负载平衡器检测到服务器已经死了,它只是将它拉出旋转。这种模式还有助于扩展性,因为您可以通过在该层上旋转更多服务器并使其自行注册到负载平衡器来扩展REST服务器层。

您也可以使用DNS来隔离客户端与服务器故障。只需将DNS记录点更改为当前活动的服务器,并在主服务器关闭时对其进行修改。但是TTL必须非常低才能让这项技术在任何合理的时间内工作。 DNS更好地用于处理完整的数据中心故障,而不是节点故障,但它是一个选项,虽然相当严重。

+0

由于空间限制,我只能有一个主服务器和一个备份服务器,两个服务器都是独立的,可以一起工作。我想要一个完整的主服务器崩溃的解决方案。 – user2579277

+0

DNS,负载均衡器或我提到的任何其他技术都适用于您的情况。 –

相关问题