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



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

我的问题是,在主服务器崩溃的情况下,我如何让一个客户端从查看主服务器变成查看备份服务器,而不需要任何用户操作?

您最好的选择是让客户端完全不做来处理服务器故障。这不是客户的责任,也不应该是。服务器端技术,如代理服务器和负载平衡器,是处理服务器故障的最佳选择。

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

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

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

最新更新