为什么Microsoft Azure 网站使用块 blob 而不是为日志追加 blob



我很困惑为什么Microsoft Azure更喜欢"块blob"而不是"追加blob"作为应用程序日志记录。

我的理解是,使用"追加 blob"客户端可以简单地将一行文本附加到 blob,而无需将任何块下载到客户端。

追加到"块 blob"涉及下载块 ID 或内容并追加到该客户端,然后将其写回 Blob。涉及更多的工作。

为什么Microsoft Azure 没有在自己的实现中使用编写日志的预期方法?使用"追加 blob"进行日志记录是否有注意事项?

确切地说,追加 blob 是相当新的,而具有块 blob 的日志记录解决方案可以追溯到很久以前。由于该遗产及其引入的所有当前依赖项,现在很难更改它。

根据我的经验,追加 blob 有一些开销以及可以附加多少次的限制。典型的日志会逐个添加许多行。

当追加的数量变得不平凡时,阅读变得非常慢。显然,附加 blob 是内部的某种链表。总之,更新块或页 blob 的实际字节数对性能更好。

此外,追加 blob 较新,日志可能是 Azure 上的第一个功能之一。

如果有一些公共 API 或库会很有用这可以隐藏通过更新 blob 来模拟追加的复杂性。

最新更新