【发布时间】: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