我们如何通过事件网格和服务总线来改善架构?

时间:2018-07-06 17:13:47

标签: azure azureservicebus event-bus azure-eventgrid

我们将Azure用作PaaS来托管多个.NET Core API项目,这些项目通过HTTP相互通信。我们刚开始时只是几个端点,但无论今天还是将来,我们都需要在项目之间进行更多此类通信。

在当今的解决方案中,我们使用HttpClient来执行这些通信。因为我们想要一个更独立的API项目,所以我们想使用带有webhooks的总线。虽然我们知道我们需要什么,但我们有很多可供选择,在Azure中感觉有些不知所措。

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

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

致谢

1 个答案:

答案 0 :(得分:2)

似乎您正在朝着很棒的微服务架构迈进。我个人看不到使用HttpClient的任何问题。这正是在我们的Azure Service Fabric应用程序中完成通信的方式。我们实现了具有重试策略的基本HttpClient库,以防万一我们从API收到短暂错误,并且一切正常。您只需要确保您的服务不太“混乱”-这是常见的微服务问题。为此,必须精心设计服务,并以合乎逻辑和最有效的方式分离职责。

您还可以在Azure云中实现其他通信方式,

  • ServiceBus队列
  • 存储队列
  • EventHubs

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

因此,这完全取决于您要实现的特定场景,对于许多(大多数)场景,Http通信应该都可以正常工作-它的巨大好处是简单易实现。在某些情况下,您需要“出队”策略。有时,您可以只使用共享数据库和每N个间隔的轮询。