我有一个相当低的并发应用程序,它对延迟敏感,其中数据必须跨两个数据中心写入。
数据库将有四个物理主机以实现冗余;主“A”数据中心中的主备主机和辅助“B”数据中心中的一对热备用主机。称他们为 AP、AS、BP、BS。
我们希望主数据中心的 AP 和 AS 之间实现自动故障转移,但如果我们必须交换数据中心,则需要手动升级辅助数据中心的主机。
我们有额外的硬件在每个数据中心运行一个仲裁节点,以确保主选举基于给定数据中心内的三个主机。B数据中心的仲裁员将离线。由于我们不希望在没有人工干预的情况下提升 B 端主机,我们可以将它们的优先级设置为零。
我们希望从运行在 A 数据中心的 Java 客户端实现安全写入,这些客户端被确认位于四个节点中的三个节点上:AP、AS 和 BP。
香草四节点设置好吗?如果我们失去 A 数据中心,服务器 BS 和 BP 可能不会都达到相同的读取。如果我们打开 B 方仲裁器,并增加 B 方的优先级以优先选择 BP 作为 master,我们可以期望 BS 和 BP 提供最新的读取吗?
或者为了将数据输入 AP、AS 和 BP,我们是否应该设置一个由 AP、AS 和 BP 组成的三个数据节点副本集,客户端将通过“w=3”错误检查写入该副本集,并以某种方式将 BS 从 BP 后面链接起来?[编辑:当节点被删除以进行维护或与 B 端的连接丢失时,不指定 w=3 是危险的。]