繁体   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