如何在客户端实现REST服务器的容错?

时间:2014-03-14 09:45:05

标签: jquery rest fault-tolerance

我正在开发一个系统,它有一个可以操作它的RESTful Web服务(该服务允许所有CURD操作),以及一个显示系统数据的Web客户端(大多数客户端是用jQuery编写的) )。在标准操作场景中,我的系统有一个主服务器和至少一个备份服务器,因此至少有两个RESTful Web服务。

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

1 个答案:

答案 0 :(得分:1)

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

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

如果负载均衡器检测到服务器已死,则只会将其拉出旋转状态。此模型还有助于实现可伸缩性,因为您可以通过简单地在该层中启动更多服务器并让它们自动注册到负载均衡器来扩展您的REST服务器层。

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