【问题标题】:How to implement fault tolerance of REST server in client side?如何在客户端实现REST服务器的容错?
【发布时间】:2014-04-19 12:39:30
【问题描述】:

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

所以我的问题是在我的主服务器崩溃的情况下,我怎样才能让一个正在查看主服务器的客户端现在正在查看备用服务器而无需任何用户操作?

【问题讨论】:

  • 您可以在客户端上实现一些循环机制。但最终解决服务器端的问题可能会更好(高可用性、负载平衡等)
  • 但是当主服务器完全崩溃并计算将请求路由到备份并且查看器客户端可以是任何计算机(有或没有我的系统)时,服务器端解决方案将无济于事。

标签: jquery rest fault-tolerance


【解决方案1】:

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

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

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

您还可以使用 DNS 使客户端免受服务器故障的影响。只需将 DNS 记录点更改为当前活动的服务器,并在主服务器出现故障时对其进行修改。然而,TTL 必须非常低,才能允许该技术在任何合理的时间内工作。 DNS 更适合用于处理完整的数据中心故障而不是节点故障,但它是一种选择,尽管相当严重。

【讨论】:

  • 由于空间限制,我只能有一个主服务器,也许还有一个备份服务器,两台服务器都是独立的,可以一起工作。我想要一个主服务器完全崩溃的解决方案。
  • DNS、负载平衡器或我提到的任何其他技术都适用于您的情况。
猜你喜欢
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多