gpt4 book ai didi

azure - 使用 Azure BlockBlob 进行日志记录(使用多个写入器方案写入文本文件)

转载 作者:行者123 更新时间:2023-12-03 03:10:43 25 4
gpt4 key购买 nike

我想使用“经典”日志方法将文本行写入文本文件。我不想将其保存在本地,而是想将数据写入 blockblob。这是代码:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(StorageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer share = blobClient.GetContainerReference("logStorage");
var logFile=share.GetAppendBlobReference("mylog.log");
logFile.AppendText("This is a log entry");

这有效,但仅在单作者场景中,因为文档明确说明了 AppendText():

This API should be used strictly in a single writer scenario because the API internally uses the append-offset conditional header to avoid duplicate blocks which does not work in a multiple writer scenario.

那么,如果我在多作者场景中需要该功能,我必须使用什么作为替代方案?

最佳答案

@OleAlbers,正如 @TamraMyers-Microsoft 所说,下面的描述来自 REST API Append Block 的“避免重复或延迟追加”部分。 ,这是多作者场景的一种方式。

In a multiple writer scenario, each client can use conditional headers, but this may not be an optimal approach in terms of performance.

但是引用文献也说如下。

For the highest concurrent append throughput, applications should handle redundant appends and delayed appends in their application layer (e.g., add epochs or sequence numbers in the data being appended).

我认为满足您的需求的简单且最好的方法是使用无锁解决方案,例如新的 Dataflow libraryAsync CTP 的一部分,异步执行多写入器操作。

您可以尝试引用教程How to: Write Messages to and Read Messages from a Dataflow Block重写您的单写入器代码以适合多写入器场景。

关于azure - 使用 Azure BlockBlob 进行日志记录(使用多个写入器方案写入文本文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com