【问题标题】:Change Stream Duplication if Microservices instance got replicated如果微服务实例被复制,则更改流复制
【发布时间】:2020-08-13 16:19:23
【问题描述】:

我已经在 J​​ava 微服务中实现了 MongoDB 更改流,当我复制我的微服务时,我看到更改流监视正在侦听两次。代码重复。有什么办法可以阻止这种情况?

【问题讨论】:

标签: mongodb reactive-streams changestream


【解决方案1】:

我给出了类似的答案here,但是由于这个问题与 Java 直接相关,我觉得它实际上与这个问题更相关。我假设您所追求的是每个更改在许多复制过程中只处理一次。

在强有力的保证下做到这一点很困难,但并非不可能。我在这里写了一个解决方案的细节:https://www.alechenninger.com/2020/05/building-kafka-like-message-queue-with.html

此解决方案在 proof-of-concept library written in Java 中实现,您可以免费使用/fork(博客文章解释了它的工作原理)。

归结为一些技巧:

  • 每个进程都尝试获取锁
  • 每个锁(或每个更改)都有一个关联的fencing token
  • 处理每个更改必须是幂等的
  • 在处理更改时,令牌用于确保有序、有效的一次更新。

更多详情请关注blog post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2022-01-08
    • 2021-01-01
    • 2021-01-18
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多