【问题标题】:Should iOS client retry on server (microservice) failure?iOS 客户端是否应该在服务器(微服务)故障时重试?
【发布时间】:2016-02-10 12:44:59
【问题描述】:

我正在构建一个由 iOS 应用组成的项目,该应用通过 HTTP 与微服务进行通信,原因有很多:验证用户、保存数据、检索数据等等。

如果客户端失败,应用会崩溃。如果可能,我们将在下一个版本中报告并修复此问题。

这是我的问题:

  1. 如果服务器出现故障,它会返回错误 HTTP 代码(4XX、5XX 等)。 iOS 应用程序应该如何反应?它应该接受失败并通知用户吗?是否应该重试?多少次?

  2. 如果数据库失败,服务器会通过 JSON 返回错误消息。同样,iOS 应用应该如何反应?

答案是否取决于所使用的技术?

【问题讨论】:

    标签: ios mobile client-server microservices conceptual


    【解决方案1】:

    这可能取决于域和请求的重要性;例如创建银行账户转帐的请求与发布状态更新的请求将不相等。

    话虽如此,他们可以在技术上仍然以相同的方式处理错误。即使在服务器故障或数据库故障的情况下,我的 2 美分也会要求重试。这可能更多地是关于移动客户端服务器应用程序的软件开发过程,但我相信大多数修复本来应该在服务器端。这是因为人们可能没有更新 iPad,并且烦他们进行升级是糟糕的用户体验。将修复的责任放在服务器端也有助于避免在应用商店发布之前通过 Google 或 Apple 的审批流程。

    接下来我会提出以下建议:

    • 在移动应用程序中保持弹性并处理所有错误,而不是让应用程序崩溃:使用 try/catch 块来处理错误,要求用户重试,或让他们知道您已报告问题。如果可能,将错误日志发送到服务器。
    • QA 和彻底测试,然后再将其放入应用商店,以避免由于错误修复而不得不多次部署。
    • 对您的软件进行架构设计,使修复通常发生在服务器端,以最大程度地减少客户端的麻烦(以及错误的实时代码)。但是,在发送到服务器的请求中未提供足够信息等错误应在移动应用程序上处理——但此类问题应通过严格的 QA 流程加以缓解。

    希望这会有所帮助。

    【讨论】:

    • 我认为这真的很有帮助。我将进行编辑以强调真正使我成为正确答案的要点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2010-09-19
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多