mongo 中的变更流如何跨多个实例工作?

How do change streams work in mongo across multiple instances?

假设我有两个数据中心,每个数据中心有 3 个实例 运行 相同的代码连接到单个 MongoDB 和单独的 Redis 数据库。

Redis A <----> Data Center A
                            |
                            |--------> MongoDB
                            |
Redis B <-----> Data Center B

期望当Mongo中的某个集合更新时,会触发数据中心A和数据中心B中的更改流以清除redis缓存。它会与变更流一起使用吗?

当您在 n nodes/instances 上有变更流代码 运行 时,每个实例都会收到变更事件,并且根据该事件和来自变更流的数据,您可以进行 businesslogic/redis 清理。

  1. 假设您在数据中心 A 上有变更流侦听器 (CS1) 运行,并且该数据中心有 Redis 服务器 A,您希望在特定条件下从数据库更改事件中清除它。
  2. 假设您在数据中心 B 上有另一个变更流侦听器 (CS2) 运行,并且该数据中心有 Redis 服务器 B,您希望在特定条件下从数据库更改事件中清除它。
  3. 两个更改流侦听器(CS1 和 CS2)侦听相同的数据库和相同的集合。
  4. 当集合发生任何更改时,两个更改流侦听器(CS1 和 CS2)都会收到更改事件
  5. CS1 将具有清理 Redis A 的逻辑,CS2 将具有清理 Redis B 的逻辑,因此当发生更改事件并且满足条件时,您的两个 Redis 服务器都将被清理。