【问题标题】:Replace Azure Service Bus with blob storage将 Azure 服务总线替换为 blob 存储
【发布时间】:2018-12-18 07:19:05
【问题描述】:

我已经使用 Azure 服务总线几年了。我前面有一个 API,用于将消息发布到服务总线主题。关于该主题,我有两个订阅,Azure 函数使用每个订阅。一个将消息写入 blob 存储,另一个将数据保存在数据库中。

              /--- subscription 1 -> Function 1 -> database
API -> topic <
              \--- subscription 2 -> Function 2 -> blob storage

我在 Azure 服务总线上遇到了很多性能问题,最终升级到了高级服务总线计划。它运行得很好,但它非常昂贵,考虑到我只是用它来将消息保存到两种存储类型。

我正在考虑切换到我的 API 将所有消息存储在 blob 存储中的另一种架构的可能性。然后创建一个函数,在 blob 存储中的新 blob 上触发并将结果保存到数据库。

API -> blob storage -> function -> database

这将是一种更便宜的方法,但我在实施这种方法时有点谨慎。使用服务总线,我有多种优化性能的方法,比如升级到更大的计划、批量消费消息等等。使用 blob 存储方法,我将所有鸡蛋都放在了 blob 存储篮中,以及它的性能。

任何有想法、类似经历或有所贡献的人?

【问题讨论】:

  • 您尝试过事件中心吗?您最多可以运行 32+32 个函数实例,并行执行数据库和 blob 写入(每个分区一个读取器,最多 32 个分区)。您还可以在事件中心消费批次。
  • @juunas 我确实看过事件中心,是的。当必须在事件中心和服务总线之间进行选择时,我确实相信我的需求倾向于服务总线的功能,例如:更大的消息、消息而不是事件等等。 Event Hub 的价格确实很吸引人。但是以我在服务总线方面的经验,恐怕我需要一个专用的事件中心来确保良好的性能。网上没有这个价格(这意味着它很贵)。谢谢你的意见。会再看看。
  • @ThomasArdal 不要担心事件中心的性能,你可以通过它发送很多。
  • 我们在谈论多少条消息(每秒)和大小?
  • @Mikhael 这也是他们对服务总线的看法。但是在共享环境中,总是会带来邻居吵闹的风险。我还没有玩过 Event Hub,所以我的担心可能是不公平的。

标签: azure azure-blob-storage azureservicebus


【解决方案1】:

如果您的用例需要将数据存储在 blob 和数据库中,您只需使用 Azure Function with Blob Trigger 即可。

不要将消息发布到 Topic,而是让 API 将消息保存在 blob 存储中。每当有新消息存储在 blob 中时,就会触发该函数,您可以将消息保存到数据库中。

我在不同的场景中使用了 blob 触发器。我的 API 将一个 zip 文件上传到 blob,我有一个带有 blob 触发器的逻辑应用程序。每当触发时,逻辑应用都会向服务总线队列发送一条消息。我的辅助角色侦听来自服务总线队列的消息并处理 zip 文件并将其存储在我的数据库中(我将 blob URL 作为消息正文发送)。我用带有 Blob 触发器的 Azure Function 替换了它,它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2017-07-08
    • 2017-07-11
    • 1970-01-01
    • 2014-09-12
    • 2016-08-23
    相关资源
    最近更新 更多