当前位置: 首页 > 知识库问答 >
问题:

Cosmos DB更改具有任意数量豆荚的库伯内特斯集群中的提要

汤修贤
2023-03-14

我的Cosmos数据库中有一个集合,我想观察它的变化。我有很多文件(官方和非官方)解释如何做到这一点。但有一件事我无法以可靠的方式工作:当我没有任何实例名称的公共引用时,如何接收对多个实例的相同更改?

我这样说是什么意思?嗯,我正在库伯内特斯集群(AKS)中运行我的工作负载。我在集群中有一个可变数量的实例,它们应该观察我的集合。为了使更改提要正常工作,我必须为每个实例有一个唯一的实例名称。我唯一的候选人是豆荚的名字。通常是的形式

如果我使用pod名称作为实例名称,所有实例不会收到相同的更改(这是我的要求),只有一个实例会收到更改(请参阅https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-processor#dynamic-缩放)。我可以做的是使用pod名称作为feed名称,然后所有实例都得到相同的更改。这就是我害怕在某个时候会咬我屁股的东西;当查看lease容器时,我可以看到每个提要名称的一组文档。随着pod名称的来来往往(名称的随机字符串部分),我担心容器会随着时间的推移而增长,产生一堆垃圾。我知道Cosmos可以处理大量的工作,但你知道,我喜欢保持东西整洁。

我怎样才能保持这东西干净整洁?我真的不想发明(或者重复使用!)我的实例之间的一些协议,用于投票给哪个实例从有限的名称集中获得哪个名称。

一个“简单”的解决方案是构建我自己的实例名,如果AKS或Kubernetes为我的POD持有某种“索引”。我知道有状态集给了我这一点,但我不想使用有状态集,因为pod本身并不是真正有状态的(除了这个特殊方面!)。


共有2个答案

宦源
2023-03-14

我建议您继续使用pod名称作为唯一ID。如果您担心数据的蔓延,您可以监视容器并设计元数据清理机制。

为了至少有一次传递,需要在某个地方保存元数据来跟踪条目在分区中的位置/位置等。我猜想,在考虑数据流中的POD中断/重新调度时,可能有一点工作要获得更改馈送处理器至少一次交付。

作为另一个选项,Azure通过EventProcessorClient从分区事件中心提供基于检查点的消息共享实现。在EventProcessorClient中,还向存储帐户添加了一些元数据。

水恩
2023-03-14

有一个新的变更提要拉模型(此时处于预览中)。

区别是:

在您的案例中,您似乎不需要并行化(您希望所有实例接收所有内容)。重要的部分是设计一个状态存储模型,它可以维护延续令牌(或者不,如果一个pod关闭然后重新启动,你可能不在乎继续)。

 类似资料:
  • 正在等待,服务endpoint尚未就绪。 Minikube版本:V0.20.0 环境: minikube日志还报告了以下错误:..... 名称:kubernetes-dashboard-2039414953-czptd命名空间:kube-system节点:minikube/192.168.99.102开始时间:2017年7月14日星期五09:31:58+0530标签:k8s-app=kuberne

  • 我正在尝试让cadence在kubernetes集群上运行。然而,我注意到Cadence服务器初始化中有一个bug,它阻止Cassandra脚本正确初始化模式。https://github.com/uber/cadence/issues/1713:所以我想我会手动完成这一步。我执行了以下步骤- < li >在docker compose上从https://raw . githubuserconte

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我在Linux服务器的Kubernetes上安装了带有2或3个pod的Spring Boot应用程序。为了监控它,我也安装了普罗米修斯。目前,从应用程序到普罗米修斯的衡量标准进展顺利。 但我怀疑普罗米修斯只从一个豆荚中提取指标。对于普罗米修斯配置文件中的如下作业,普罗米修斯是否只从一个pod中获取指标?我怎样才能让普罗米修斯同时刮掉所有的豆荚呢?

  • 我正在评估Kubernetes作为我们新应用程序的平台。现在看来,这一切都非常令人兴奋!但是,我遇到了一个问题:我在GCE上托管集群,需要某种机制在两个POD(持续集成服务器和应用服务器)之间共享存储。对库伯内特斯来说,最好的方法是什么?所有的卷类型似乎都不适合我的需要,因为如果一个pod需要写入磁盘,GCE磁盘就不能共享。NFS将是完美的,但似乎需要kubernetes集群的特殊构建选项? 编辑