簡體   English   中英

面臨 Azure cosmos 多區域 AKS 更改提要處理器的問題

[英]Facing issue with Azure cosmos change feed processor for Multi region AKS

我們在具有 5 個實例的 AKS 中的單個區域中部署了自定義更改源處理器。 事情總是在單個區域運行良好。 (請注意,每個 pod 實例(提要處理器)都分配有一個唯一的 [.WithInstanceName(new GUID)]。

我們最近轉向多區域設置,如下所示:

  • EastUS AKS 集群 = 5 個 pod(5 個 feed 處理器,每個實例名稱都是唯一的)
  • WestUS AKS 集群 = 5 個 pod(5 個 feed 處理器,每個實例名稱都是唯一的)

現在使用上述設置,結果不是很一致,因為有時在部署 AKS 服務后,我們的 feedprocessor 停止接收某些集合的事件)。

為了解決這個問題,我們需要最終刪除租約集合,然后一切都會重新開始。

我們不能 go 使用上述解決方法,因此需要幫助來解決問題。

這是代碼片段:

Container leaseContainer = cosmosClient.GetContainer(databaseName, leaseContainerName);
            changeFeedProcessor = cosmosClient.GetContainer(databaseName, sourceContainerName)
                .GetChangeFeedProcessorBuilder(processorName: sourceContainerName, async (IReadOnlyCollection<TContainer> changes, CancellationToken cancellationToken) => await onChangesDelegate(changes, cancellationToken))
                    .WithInstanceName($"{Guid.NewGuid()}")
                    .WithLeaseContainer(leaseContainer)
                    .Build();

其中 leaseContainerName = "container-lease"

問題是您正在混合實例。 如果你希望每個區域獨立工作(同一個文檔將 go 更改為獨立的兩組處理器),請設置不同的processorName

當您定義具有特定processorName 、租約和受監控容器的機器集群時,您定義了一個Deployment Unit 更改源事件分布在這些機器上。

如果您部署 2 個集群但具有相同的值,那么這 10 個 pod 現在是相同的部署單元,因此更改分布在 10 個 pod 中,這意味着現在特定更改將落在其中一個區域的 1 個實例中但其他地區將看不到它。

您可以將區域名稱設置為processorName ,例如:

Container leaseContainer = cosmosClient.GetContainer(databaseName, leaseContainerName);
            changeFeedProcessor = cosmosClient.GetContainer(databaseName, sourceContainerName)
                .GetChangeFeedProcessorBuilder(processorName: regionName, async (IReadOnlyCollection<TContainer> changes, CancellationToken cancellationToken) => await onChangesDelegate(changes, cancellationToken))
                    .WithInstanceName($"{Guid.NewGuid()}")
                    .WithLeaseContainer(leaseContainer)
                    .Build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM