我们如何使用事件网格和服务总线改进我们的体系结构?

How could we improve our architecture with Event Grid and service bus?

我们使用 Azure 作为我们的 PaaS 来托管多个 .NET Core API 项目,这些项目通过 HTTP 相互通信。当我们开始时,它只是几个端点,但在今天和未来,我们需要在项目之间进行更多此类通信。

在今天的解决方案中,我们使用 HttpClient 来执行这些通信。由于我们想要一个更独立的 API 项目,我们希望使用带有 webhook 的总线。虽然我们知道我们需要什么,但我们有很多选择,在 Azure 中感觉有点不知所措。

我们的要求是基本的,即向特定端点发送具有最小负载的请求,例如创建了 ID xx 的用户。

我们有点困惑,需要指出正确的方向在 Azure 平台中。随时询问您是否需要更多信息来帮助我们!

此致

看来您正在转向微服务架构,这很棒。我个人认为使用 HttpClient 没有任何问题。这正是我们的 Azure Service Fabric 应用程序中进行通信的方式。我们实现了一个带有重试策略的基础 HttpClient 库,以防万一我们从 API 收到暂时性错误并且一切都按预期工作。您只需要确保您的服务不会太 "chatty" - 这是一个常见的微服务问题。为此,必须精心设计服务,并以合乎逻辑且最有效的方式划分职责。

您可以在 Azure 云中实施其他通信方式,我使用的是:

  • ServiceBus 队列
  • 存储队列
  • 事件中心

它们都适用于特定场景。例如,如果您希望您的服务或某些第 3 方服务出现故障,您可能需要考虑在 EventHub 中累积消息,直到服务启动并再次 运行 并准备好处理它们。

所以这完全取决于您要实现的特定场景,对于许多(大多数)场景,Http 通信应该工作得很好 - 它的最大好处是简单和易于实现。对于某些场景,您需要 "dequeuing" 策略。有时您可以只使用共享数据库并每隔 N 个时间间隔轮询一次。