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 清理。
- 假设您在数据中心 A 上有变更流侦听器 (CS1) 运行,并且该数据中心有 Redis 服务器 A,您希望在特定条件下从数据库更改事件中清除它。
- 假设您在数据中心 B 上有另一个变更流侦听器 (CS2) 运行,并且该数据中心有 Redis 服务器 B,您希望在特定条件下从数据库更改事件中清除它。
- 两个更改流侦听器(CS1 和 CS2)侦听相同的数据库和相同的集合。
- 当集合发生任何更改时,两个更改流侦听器(CS1 和 CS2)都会收到更改事件
- CS1 将具有清理 Redis A 的逻辑,CS2 将具有清理 Redis B 的逻辑,因此当发生更改事件并且满足条件时,您的两个 Redis 服务器都将被清理。
假设我有两个数据中心,每个数据中心有 3 个实例 运行 相同的代码连接到单个 MongoDB 和单独的 Redis 数据库。
Redis A <----> Data Center A
|
|--------> MongoDB
|
Redis B <-----> Data Center B
期望当Mongo中的某个集合更新时,会触发数据中心A和数据中心B中的更改流以清除redis缓存。它会与变更流一起使用吗?
当您在 n nodes/instances 上有变更流代码 运行 时,每个实例都会收到变更事件,并且根据该事件和来自变更流的数据,您可以进行 businesslogic/redis 清理。
- 假设您在数据中心 A 上有变更流侦听器 (CS1) 运行,并且该数据中心有 Redis 服务器 A,您希望在特定条件下从数据库更改事件中清除它。
- 假设您在数据中心 B 上有另一个变更流侦听器 (CS2) 运行,并且该数据中心有 Redis 服务器 B,您希望在特定条件下从数据库更改事件中清除它。
- 两个更改流侦听器(CS1 和 CS2)侦听相同的数据库和相同的集合。
- 当集合发生任何更改时,两个更改流侦听器(CS1 和 CS2)都会收到更改事件
- CS1 将具有清理 Redis A 的逻辑,CS2 将具有清理 Redis B 的逻辑,因此当发生更改事件并且满足条件时,您的两个 Redis 服务器都将被清理。