处理多级网络请求的正确方法是什么?

时间:2017-04-12 15:58:25

标签: web-services http asynchronous microservices

我有一个接受来自客户站点的HTTP请求的服务。然后,该服务向事务电子邮件提供商发送HTTP请求,其中包含在对服务的初始请求中提供的信息。工作流程如下所示:

CustomerSite EmailService TransactionEmailProvider

我可以想到处理请求的两种可能性,以便可以将TransactionalEmailProvider中的错误报告给CustomerSite。

  1. EmailService立即向其发送异步请求 TransactionalEmailProvider收到来自的请求时 CustomerSiteEmailService立即响应 CustomerSite如果请求正确,则会显示成功代码 形成。如果发送请求时发生了故障 TransactionalEmailProviderEmailService发送失败 使用POST返回EmailService的POST请求的通知 webhook实现。
  2. EmailService向TransactionalEmailProvider发送请求,并在响应CustomerSite请求成功或失败之前等待响应。
  3. 现在我正在实施第一个版本,因为我不希望EmailService的响应能力取决于TransactionalEmailProvider的响应能力。

      

    这是处理依赖于第二级HTTP请求的HTTP请求的合理方法吗?是否存在一种优先于另一种的情况?

1 个答案:

答案 0 :(得分:1)

  

这是处理依赖于第二级HTTP请求的HTTP请求的合理方法吗?是否存在一种优先于另一种的情况?

这实际上取决于系统要求,它取决于您在某些组件发生故障或工作负载变化时的行为方式。

如果您希望系统具有反应性或可扩展性,则应尽可能使用异步请求。为此,您的系统应该是消息驱动的。您可以阅读有关reactive system here的更多信息。这似乎是你的第一选择。

如果您想要一个更简单的系统,那么请使用同步/阻止请求,例如您的选项号。 2