更改提要处理器:多区域部署单元



我有在多个地区运行的微服务(Kubernetes pod(。我有一个监控收集。(所有区域都将监测同一采集;每个区域都有多个吊舱(

我希望每个地区的部署单位能够独立处理(已更新的(每个文件。以下是我计划如何做到这一点:

  • 每个地区的部署单元都将使用一个不同的处理器名称(如CFP-US、CFP-Europe、CFP-Australia(
  • 在一个区域中运行的所有pod都将使用该区域的处理器名称、相同的租赁容器和不同的实例名称(比如pod的唯一id(。(实际上,所有地区的租赁集装箱都是一样的(

问题:

  • 以上设置是否达到了我想要的效果(即,每个区域独立处理更新的每个文档?(
  • 我的收藏只有一个物理分区。我的理解是,在这种情况下,一个区域中的所有pod/实例都只存在一个租约(因为租约是针对物理分区的(;并且每个区域将具有其自己的租约(因为每个区域的处理器名称不同(。我的理解正确吗
  • 假设我在一个区域中有3个pod/实例。由于只有租约存在,一次只有pod接收CFP更新,而其他2个处于空闲状态。我如何配置租约/间隔,以便所有3个pod都能(几乎(平等地获得更新?即,pod-A获得更新(并且pod-B、pod-C处于空闲(,然后在一段时间后,pod-B获得更新(以及pod-A、pod-C处于空闲(;则pod-C获得更新(并且pod-B、pod-A处于空闲状态(;等等
  • 医生说:

实例数不应大于租约数。

除了一些pod可能处于空闲状态之外,拥有比租约更多的实例是否会导致其他问题?(特别是在租赁状态下,或在获得/续签租赁等方面的问题(

  1. 是。只要他们是不同的部署单位(https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/change-feed-processor?tabs=dotnet#deployment-单位(,无论它们实际位于何处,每个部署单位都会收到更改
  2. 正确。每个部署单元将创建自己的独立Leae集
  3. 你不能。每台机器的租赁分配是按设计的,没有强制配置
  4. 这是理想的情况,原因是所有机器(使用LeaseAcquireInterval(都会频繁检查是否可以获得新租约。如果当前拥有它的机器释放了它(例如,针对未处理的错误(,则租约可以跳到任何其他机器。根据您的遥测,这可能是不可取的

最新更新